背景
:自学python,近段时间在找工作。抱着“所学不能应用于实际,那一切便毫无意义”的想法,写了个对拉钩网的爬虫。中途被拉钩的反爬机制弄的有点抓狂,最后终于在挂代理+设置随机等待时长的方法下写完了。
- 开发环境
语言: python 2.7
系统: VMware下的ubuntu16.04
- 拉钩搜索结果界面以Ajax加载,详情页的url地址藏在json文件中,需要比对。
- 如果不换IP地址,每次爬取至少需要等待10s以上,否则爬取到5~6个结果的时候还会被反爬掉。
- 请求头需要完整填写,单个User-Agent出来的是不同页面。 # 没做多次尝试,可能只需其中几个就够了。
- 搜索界面与详情页的headers需要单独分开。
- 错漏
- 爬取拉钩并不需要用户账号密码,写之前未分析清除,增加了无意义代码量。 # 从这也看出拉钩并不封禁账号……
- 承上条,因为账户关系,使用了requests.seession()方法留存cookie值,留下痕迹。
- 挂上代理池等待时长应该是可以省略的,稍微延迟减少对对方服务器压力即可。
- 改进方向
- 删除登陆界面相关代码,直接用post方法请求即可。
- 使用代理池可将随机等待时长删去,提高程序运行效率。
- xpath处理后数据仍然存在空格或者其他不明符号,需要再做清理。
- 学习方向
- 数据清洗入库,以re和字符串处理为主,pandas酌情。
- 结合scrapy进行多线程大量数据的爬取。
若有疏漏或者错误的地方,还请各位大佬指出,感谢。