爬虫经验

最近实习写了两个爬虫,使用的工具是requests , bs4, selenium + PhantomJS, 这里写一些总结。
1.ajax
通常可以通过分析js文件,找到数据接口,可以直接获取到数据

2.正则表达式re
获取到的json数据格式为:jQuery1910981251106322391_1517453911085({…})就需要用正则表达式来解析数据

3.验证码识别
最普通的思路为:分割图片,灰度二值化转为黑白,与预留图片计算向量
参考:https://www.shiyanlou.com/courses/364

4.登录 session
requests库有Session对象,会在同一个 Session 实例发出的所有请求之间保持 cookie

5.浏览器渲染,使用selenium + PhantomJS,
注意selenium版本要大于2,小于3,因为3以上不支持PhantomJS,PhantomJS安装最好采用源码安装,apt-get得到的版本功能并不全

6.断点重续
断点通常是因为网络请求失败,失败的原因通常为以下几种:
(1)超时
(2)连接太多
(3)selenium
超时通常是因为在requests设置了timeout,
连接太多可以在headers中指定connection:close,
selenium请求出错暂时原因未知。

考虑使用这样的代码:

html = ''
while html == '':
    try:
        html = requests.get('')
    except Exception:
        html = ''
        continue

7.动态IP
有些网站会封IP,需要使用代理,建议可以使用阿布云的代理,使用过感觉还可以,价格略贵,接入可以看接入指南。

8.多线程同步问题
多线程同时读写Excel,会出现乱序问题,可以考虑这样处理,先让多线程将获取到的数据序列化为pkl文件,达到100条后,然后再由另一线程写入到Excel表中。

你可能感兴趣的:(python)