爬虫的基本流程

爬虫的基本流程
发起请求
通过http库向目标站点发起请求,也就是发送一个request,请求可以包含额外的header等信息,等待服务器响应
获取响应内容
如果服务器能正常响应,会得到一个response,response的内容便是所要获取的页面内容,类型可能是http,json字符串,二进制数据(图片或者视频)等类型
解析内容
得到的内容可能是html,可以用正则表达式,页面解析库进行解析,可能是json,可以直接转换为json对象解析,可能是二进制数据,可以做保存或者进一步的处理
保存数据
保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件
request,response
浏览器发送消息给网址所在的服务器,这个过程就叫做http request
服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做响应的处理,然后把消息回传给浏览器,这个过程就是http response
浏览器收到服务器发的response信息后,会对信息进行响应的处理,然后展示
request中包含什么
请求方式
主要有:get/post两种类型常用,另外还有head/put/delete/options
get和post区别:请求的数据存放位置不同
get:请求数据存放在URL中,向指定的资源发出“显示”请求,使用get方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在web application中。其中一个原因是get可能会被网络蜘蛛随意访问
post:请求存放在头部,向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求文本中。这个请求可能会创建新的资源或修改现有资源,或者二者皆有
head:与get方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的文本部分。他的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”
put:向指定资源位置上传内容
options:这个方法可使服务器传回该资源所支持的所有http请求方法。用‘*’来代替资源名称,向web服务器发送options请求,可以测试服务器功能是否正常工作
delete:请求服务器删除request-url所标识的资源
请求URL
URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有 一个唯一的URL,它包含的信息指出文件的位置一级浏览器应该怎么处理它。
URL的格式由三个部分组成
第一部分是协议(或服务方式)
第二部分是存有该资源的主机IP地址(有时也包括端口号)
第三部分是主机资源的具体地址,如目录和文件名等。

爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据
请求头
包含请求时的头部信息,如user-agent,host,cookies等信息,如下图所示:
在这里插入图片描述
请求体
请求时携带的数据,如提交表单数据时候的表单数据(post)
response中包含什么
所有http响应的第一行都是状态行,一次是当前http版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。
响应头
如内容类型,类型的长度,服务器信息等如图
在这里插入图片描述响应状态
有多重响应状态,如图:
在这里插入图片描述
1- -消息——请求已被接收,继续处理
2- -成功——请求已成功被服务器接收、理解、接受
3- -重定向——需要后续操作才能完成这一请求
4- -请求错误——请求还有语法错误或者无法被执行
5- -服务器错误——服务器在处理某个正确请求时发生错误
响应体
最主要的部分,包含请求资源的内容,如网页html,图片、视频等二进制数据
能抓取什么样的数据
网页文本:如html文档,json格式化文本等
图片:获取到的是二进制文件,保存为图片格式
视频:同样是二进制文件
其他:只要请求到的,都可以获取
如何解析数据
1.直接处理
2.json解析
3.正则表达式处理
4.BeautifulSoup解析处理
5.PyQuery解析处理
6.XPath解析处理
关于抓取的页面数据和浏览器里看到的不一样的问题
出现这种情况是因为,很多网站的数据都是通过Js,ajax动态加载的,所以直接通过get请求获取的页面和浏览器显示的不同
如何解决js渲染的问题?
分析ajax
selenium/webdriver
splash
pyv8,ghost,py
怎样保存数据
文本:纯文本,json,xml等
关系型数据库:mysql,oracle,sql server等结构化数据库
非关系型数据库:MongoDB,Redis,等key-value形式存储

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值