爬虫工程师需要具备哪些技能
1 爬虫工程师是干嘛的?
1.1 主要工作内容
爬虫工程师的主要工作内容是获取数据,获取互联网上的数据。
数据的来源:
- 用户产生的(UGC)
- 通过爬虫爬取
- 数据聚合类网站需要爬虫,如google搜索,网盘搜索引擎,种子搜索引擎
- 信息对比网站,如比价类网站,优惠券网站
- 个人效率提升,如爬取网上的图片,备份资料
推荐python和java
2.2 任务队列
【爬虫工程师需要具备哪些技能】将计划抓取的网页都放在任务列表,然后worker从队列中一个一个执行,如果失败,记录一下,然后执行下一个。
常用的任务队列:
- kafka
- beanstalkd
- celery
数据保存可以有如下三种方式:
- 数据库
- json
- csv
2.4 HTTP知识
- html文档的解析方法 - xpath
- HTTP协议
- 浏览器工具 - Developer Tools Chrome, copy as curl 功能
爬虫写好后需要监控实际运行的情况,涉及到爬虫的日志系统和数据量的统计,爬虫的运维有以下3个思路:
- 数据增量监控:
定向爬虫(只针对一个网站的爬虫),主要看数据的增加的趋势;非定向爬虫的数据增量不是很稳定,需要看机器的网络状况 - 爬虫执行的成功情况:
对一次爬虫执行进行日志,将执行的时间,状态,目标url,异常放入日志系统,通过可视化手段查看爬虫的失败率 - 爬虫抛出Exception:
错误日志的收集
访问太频繁,会被封锁IP
3.2 登录限制
通常模拟用户的登录方式,加cookie
3.3 通过Header封杀
访问时加上Header
3.4 JavaScript脚本动态获取网站数据
有一些网站(尤其是单页面网站)的内容并不是通过服务器直接返回的,而是服务器只返回一个客户端JavaScript程序,然后JavaScript获取内容。更高级的是,JavaScript在本地计算一个token,然后拿这个token来进行AJAX获取内容。而本地的JavaScript又是经过代码混淆和加密的,这样我们做爬虫的通过看源代码几乎不可能模拟出来这个请求(主要是token不可能破解)
使用headless浏览器,运行这个客户端程序,来100%模拟真实用户
3.5 验证码
比较复杂,通过机器学习,图像识别来破解
3.6 IP限制
永久封杀IP,使用代理池的方式作为爬虫的标配,或者高匿代理
3.7 网站内容反爬
将网站内容改为图片显示,但是可以通过OCR识别来解决
推荐阅读
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 你觉得,写作需要情怀吗()
- 堕落不需要理由,只需要借口
- 新媒体时代,你需要掌握的必备技能
- 爬虫数据处理HTML转义字符
- 2020-12-18房爸爸逸娜分享
- 有一个人
- 2018-12-05爬虫
- 我的软件测试开发工程师书单
- ExcelPackage读取写入