一、什么是爬虫

互联网比喻成一张网,每张网上的节点就是数据存储的地方;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