通用爬虫的套路
准备 url
准备 start_url
url 地址规律不明显,总数不确定
通过代码提取下一页URL
xpath
寻找 url 地址,部分参数在当前响应中(比如,当前页码数和总的页码数在当前的响应中)
准备 url_list
发送请求,获取响应
添加随机的 User-Agent
,反反爬虫
添加随机的代理IP
,反反爬虫
在对方判断出我们是爬虫之后,应该添加更多的 header
字段,包括cookie
cookie的处理可以使用session来解决
准备一堆能用的cookie,组成cookie池
如果不登录
准备刚开始能够成功请求对方网站的cookie,即接收对方网站设置在response的cookie
下次请求的时候,使用之前的列表中的cookie来请求
如果登录
准备多个账号
使用程序获取每个账号的cookie
之后请求登录之后才能访问的网站随机的选择cookie
提取数据
确定数据的位置
如果数据在当前页面的url地址中
如果数据不在当前URL地址中
在其他响应中,寻找数据的位置
从 network 中从上往下寻找
使用chrome中过滤条件,选择除了 js ,css , img 之外的按钮
使用chrome的search all file,搜索数字和英文
数据提取
xpath,从html中提取整块的数据,先分组,之后每一组再提取
re,提取max_time,price,html中的json字符串
json
保存
保存在本地,text、 json、csv
保存在数据库
xpath的包含
//div[contains(@class,"i")]
爬虫代码建议
尽量减少请求次数
能抓列表就不用抓详情页
保存获取到的html页面,供查错和重复请求使用
关闭网站的所有类型的页面
多伪装
利用多线程分布式 在不被ban的请求下尽可能提高速度
技巧
自定义UA(User-Agent)代理池
ua_list = [
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0' ,
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.