一 什么是爬虫
通常爬虫是从某个网站的某个页面开始,爬取这个页面的内容,找到网页中的其他链接地址,然后从这个地址爬到下一个页面,这样一直不停的爬下去,进去批量的抓取信息。那么,我们可以看出网络爬虫就是一个不停爬取网页抓取信息的程序。
二 爬虫的基本流程
1,发起请求
向目标站点发送一个Requests请求,包括额外的headers,url 等信息。类似于我们输入一个网址等待服务器相应获取网页内容。
* 2,获取响应内容*
Response Requsets请求获得回应,其回应类型可能有HTML、Json字符串,二进制数据(图片,视频等)等类型 ,总之就是返回数据给请求方,通过模拟请求响应的方式来获得数据信息。
3,解析内容
得到的内容可能是HTML,可以使用正则表达式,网页解析库进行解析。也可能是Json,可以直接转为Json对象解析。可能是二进制数据,可以做保存或者进一步处理。这一步相当于浏览器把服务器端的文件获取到本地,再进行解释并且展现出来。
4,保存数据
保存的方式可以是把数据存为文本,也可以把数据保存到数据库,或者保存为特定的jpg,mp4 等格式的文件
三 Requests请求
包涵:
请求方式:通过GET,POST,HEAD,PUT,DELETE方式请求数据。
请求url:用来定位所需资源位置信息,任何一个所需的资源都可以是使用url来定位它。
请求头:请求头包含请求时的头部信息,如User-Agent(指定浏览器的请求头),Host,Cookies等信息;
请求体:请求体是请求是额外携带的数据,比如登录表单提交的登录信息数据。
四 Response
服务器收到浏览器发送的信息后,能够根据浏览器发送信息的内容,做出相应的处理,然后把消息回传给浏览器,这个过程就叫做HTTP Response。
返回的Response包含:
响应状态:200 表示成功
301 表示跳转
404 表示找不到页面
502 表示服务器出错
响应头(Response Headers):比如内容类型,内容长度,服务器信息,设置Cookie等;
能抓到什么样的数据?
网页文本:如 HTML 文档,Ajax加载的Json格式文本等;图片,视频等:获取到的是二进制文件,保存为图片或视频格式;其他只要能请求到的,都能获取。
#这段代码用来获取此url下的图片二进制信息
import requests
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
resp=requests.get('http://f.hiphotos.baidu.com/image/h%3D300/sign=16e69d830f4f78f09f0b9cf349300a83/63d0f703918fa0ece5f167da2a9759ee3d6ddb37.jpg',headers=headers)
print(resp.content) # 二进制文件使用content