您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

小白学爬虫(二) - 之爬虫的原理

5b51 2022/1/14 8:24:07 python 字数 15249 阅读 594 来源 www.jb51.cc/python

在上文中我们说了:爬虫就是请求网站并提取数据的自动化程序。其中请求,提取,自动化是爬虫的关键!下面我们分析爬虫的基本流程 爬虫的基本流程 发起请求通过HTTP库向目标站点发起请求,也就是发送一个Req

概述

在上文中我们说了:爬虫就是请求网站并提取数据的自动化程序。其中请求,提取自动化是爬虫的关键!下面我们分析爬虫的基本流程

发起请求通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应

获取响应内容如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型

解析内容得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理

保存数据保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件

发起请求通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应

获取响应内容如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型

解析内容得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理

保存数据保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件

发起请求通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应

获取响应内容如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型

解析内容得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理

保存数据保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件

浏览器发送消息给网址所在的服务器,这个过程就叫做HTPP Request

服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应的处理,然后把消息回传给浏览器,这个过程就是HTTP Response

浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后展示

浏览器发送消息给网址所在的服务器,这个过程就叫做HTPP Request

服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应的处理,然后把消息回传给浏览器,这个过程就是HTTP Response

浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后展示

浏览器发送消息给网址所在的服务器,这个过程就叫做HTPP Request

服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应的处理,然后把消息回传给浏览器,这个过程就是HTTP Response

浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后展示

请求方式

主要有:GET/POST两种类型常用,另外还有HEAD/PUT/DELETE/OPTIONSGET和POST的区别就是:请求的数据GET是在url中,POST则是存放在头部

GET:向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问

POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

PUT:向指定资源位置上传其最新内容

OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

DELETE:请求服务器删除Request-URI所标识的资源。

请求URL

URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL的格式由三个部分组成:第一部分是协议(或称为服务方式)。第二部分是存有该资源的主机IP地址(有时也包括端口号)。第三部分是主机资源的具体地址,如目录和文件名等。

爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。

请求头

包含请求时的头部信息,如User-Agent,Host,Cookies等信息,下图是请求请求百度时,所有的请求头部信息参数

请求体请求是携带的数据,如提交表单数据时候的表单数据(POST)

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

响应状态

有多种响应状态,如:200代表成功,301跳转404找不到页面502服务器错误

响应头

内容类型,类型的长度,服务器信息,设置Cookie,如下图

响应体

最主要的部分,包含请求资源的内容,如网页HTMl,图片,二进制数据等

网页文本:如HTML文档,Json格式化文本等图片获取到的是二进制文件,保存为图片格式视频:同样是二进制文件其他:只要请求到的,都可以获取

网页文本:如HTML文档,Json格式化文本等图片获取到的是二进制文件,保存为图片格式视频:同样是二进制文件其他:只要请求到的,都可以获取

网页文本:如HTML文档,Json格式化文本等图片获取到的是二进制文件,保存为图片格式视频:同样是二进制文件其他:只要请求到的,都可以获取

  1. 直接处理
  2. Json解析
  3. 正则表达式处理
  4. BeautifulSoup解析处理
  5. PyQuery解析处理
  6. XPath解析处理

页面数据和浏览器里看到的不一样的问题

出现这种情况是因为,很多网站中的数据都是通过js,ajax动态加载的,所以直接通过get请求获取页面和浏览器显示的不同。

如何解决js渲染的问题?

分析ajaxSelenium/webdriverSplashPyV8,Ghost.py

文本:纯文本,Json,Xml等

关系型数据库:如MysqL,oracle,sql server等结构化数据库

非关系型数据库:MongoDB,Redis等key-value形式存储

文本:纯文本,Json,Xml等

关系型数据库:如MysqL,oracle,sql server等结构化数据库

非关系型数据库:MongoDB,Redis等key-value形式存储

文本:纯文本,Json,Xml等

关系型数据库:如MysqL,oracle,sql server等结构化数据库

非关系型数据库:MongoDB,Redis等key-value形式存储

总结

以上是编程之家为你收集整理的小白学爬虫(二) - 之爬虫的原理全部内容,希望文章能够帮你解决小白学爬虫(二) - 之爬虫的原理所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶