第一章 开发系统的建立直接滤过,直接从第二章开始。第二章的主要内容是一些爬虫常用的基础知识。
2.1 HTTP基础原理
URI和URL 超文本 HTTP和HTTPS HTTPS与HTTP的区别在于HTTP下加入了SSL层(但是这个SSL层是指什么并不理解)
HTTP请求过程 通过谷歌浏览器开发者工具进行查看。包括general部分、response headers和requests headers。之后讲解了请求和响应都包含哪些内容。
请求主要包括:请求方法(重点是get和post),请求的网址,请求头和请求体。
请求头包括:Accept、Accept-Language、Accept-Encoding、Host、Cookie、Referer、User-Agent、Content-Type。请求头是请求的重要组成部分,在写爬虫时,大部分情况都要设置请求头。请求体承载的内容是POST请求中的表单数据,而对于get请求,则为空。在爬虫中,如果需要构造POST请求,需要使用正确的content-type,并了解各种请求库的各个参数设置时使用的是哪种content-type,不然可能导致post 提交后无法正常响应。
响应主要包括三部分:响应状态码、响应头和响应体。
响应状态码重点应该使200和404吧(后续如果碰到重要的再补充)。响应头略过。响应体:响应的正文数据都在响应体中,在浏览器开发者工具中点击preview,就可以看到网页的源代码,也就是响应体的内容。在爬虫时,我们主要通过响应体得到网页的源代码、JSON数据等,然后从中做相应内容的提取。
2.2网页基础
本节重点介绍了网页的基本组成、机构和节点
2.2.1网页的组成
网页分为三大部分:HTML、CSS和JavaScript。HTML是超文本标记语言,用于形成网页的架构。CSS即层叠样式表,用于网页页面排版,在网页中,一般会同意定义整个网页的样式规则,并写入CSS文件中,在HTML中,只需要用link标签即可引入写好的CSS文件。JavaScript可以给用户提供一种实时、动态、交互的页面功能。JavaScript也是以单独的文件形式加载,后缀为Js,在HTML中通过script标签即可引入。
2.2.2通过一个实例介绍了网页的结构,这里就不展开了。
2.2.3节点树与节点间的关系
在HTML中,所有标签定义的内容都是节点,它们构成了一个HTML DOM树
节点树中的节点彼此之间拥有层级关系。通常用父(parent)、子(child)和兄弟(silbling)等属于描述这些关系。父节点拥有子节点。同级的子节点被称为兄弟节点。
2.2.4选择器 根据我的理解,这一节应该介绍的是怎么找到某个具体的节点。介绍了两种方法,一种是CSS选择器,一种是Xpath。xpath 更为常用,CSS选择器没有细看。
2.3爬虫的基本原理
2.3.1爬虫主要包括:获取网页、提取信息、保存数据和自动化程序。获取网页就是获取网页的源代码,可以采用urllib和requests库。提取信息是分析网页源代码,从中提取我们想要的数据,提取信息最为通用的方法是正则表达式,但是构造正则表达式比较复杂且容易出错;除此之外我们还可以使用Beautiful Soup、lxml等库宝珠我们快速提取网页信息。保存数据,我们即可以保存成TXT和JSON文本,也可以保存到数据库,如MySQL和MongoDB,也可保存至远程服务器,如借助SFTP进行操作。
2.3.2能抓取什么数据
2.3.3 JavaScript渲染页面 现在越来越多的网页采用Ajax、前端模块化工具来构建,整个网页都是由Javascript渲染出来的,也就是原始的HTML代码就是一个空壳。对于这种情况,我们可以分析其后台Ajax接口,也可使用Selenium、Splash这样的库来实现模拟JavaScript渲染。
2.4 会话和Cookies
2.4.1静态网页和动态网页
2.4.2这一小节作者从无状态介绍了会话和Cookies。会话在服务端,也就是网站的服务器,用来保存用户的会话信息;Cookies在客户端,有了Cookies,浏览器在下次访问网页时会自动附上它发送给服务器,服务器通过识别Cookies并鉴定出是哪个用户,然后判断用户是否是登陆状态,然后返回响应。因此在爬虫中,有时候处理需要登陆才能访问的页面时,我们一般会直接将的登陆成功后获取的Cookies放在请求头里面直接请求,而不必重复模拟登陆。Cookies都有哪些内容呢?在开发者工具中打开Application选项卡,然后在左侧有一个Storage部分,最后一项即为Cookies,将其点开,就可以查看具体的Cookies。
2.5 代理的基本原理 代理就是网络信息的中转站。正常请求一个网站时,是发送请求给web服务器,web服务器响应传回给我们。如果设置了代理服务器,实际上就是在本机和服务器之间搭建了一个桥,本机是向代理服务器发出请求。代理可以帮助我们突破自身IP的访问限制,访问一些单位或者团体的内部资源,提高访问速度,隐藏真实IP。
常见代理设置:网上的免费代理形成一个代理池,使用付费代理服务,ADSL拨号。