一、什么是爬虫
互联网比喻成一张网,每张网上的节点就是数据存储的地方;Python程序类似蜘蛛,到每个节点中抓取自己的猎物;爬虫是指:给网站发送请求,获取资源后解析并提取有用数据的程序
二、爬虫的执行流程
发送请求,获得数据(以图片,视频,js,css的形式),解析数据,存入数据库或文件中
爬虫执行流程
1、发送请求request
1 2 3 4 5
| 使用http库向目标站点发起请求,即发送一个Request
Request包含:请求头、请求体等
Request模块缺陷:不能执行JS 和CSS 代码
|
2、获取响应内容 response
1 2 3
| 如果服务器能正常响应,则会得到一个Response
Response包含:html,json,图片,视频等
|
3、解析内容
1 2 3 4 5 6 7 8 9 10 11 12 13
| 解析html数据:正则表达式(RE模块),第三方解析库如Beautifulsoup,pyquery等
解析json数据:json模块
解析二进制数据:以wb的方式写入文件
请求头需要注意的参数:
(1)Referrer:访问源至哪里来(一些大型网站,会通过Referrer 做防盗链策略;所有爬虫也要注意模拟)
(2)User-Agent:访问的浏览器(要加上否则会被当成爬虫程序)
(3)cookie:请求头注意携带
|
4、请求体
1 2 3 4 5 6 7 8 9 10 11
| 请求体
如果是get方式,请求体没有内容(get请求的请求体放在 url后面参数中,直接能看到)
如果是post方式,请求体是format data
ps:
1、登录窗口,文件上传等,信息都会被附加到请求体内
2、登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post
|
五、响应Response
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| 1、响应状态码
200:代表成功
301:代表跳转
404:文件不存在
403:无权限访问
502:服务器错误
2、respone header
响应头需要注意的参数:
(1)Set-Cookie:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来
(2)Content-Location:服务端响应头中包含Location返回浏览器之后,浏览器就会重新访问另一个页面
3、preview就是网页源代码
JSO数据
如网页html,图片
二进制数据等
|
六、总结
1 2 3 4 5 6 7 8 9 10 11 12 13
| 1、总结爬虫流程:
爬取--->解析--->存储
2、爬虫所需工具:
请求库:requests,selenium(可以驱动浏览器解析渲染CSS和JS,但有性能劣势(有用没用的网页都会加载);)
解析库:正则,beautifulsoup,pyquery
存储库:文件,MySQL,Mongodb,Redis
|
参考:
作者:热心市民小蔡
链接:https://www.jianshu.com/p/2411490d6464
原文作者: 何阵运(HE)
原文链接: http://hezhenyun.github.io/2019/11/20/爬虫基本原理/
版权声明: 转载请注明出处(必须保留作者署名及链接)