使用python编写的爬虫脚本(程序)可以完成定时定量,指定目标(Web站点)的数据爬取,主要使用多(单)线程/进程,网络请求库,数据解析,数据存储,任务调度等相关技术。
可以完成接口测试,功能性测试,性能测试和集成测试。
爬虫使用网络请求库,相当于客户端请求,Web后端服务根据请求响应数据。
https://www.cnblogs.com/lauhp/p/8979393.html
爬虫向Web服务器发起HTTP请求,正确的接受响应数据,然后根据数据类型content-type进行数据解析及存储。
爬虫在发起请求之前,需要伪造浏览器User-Agent指定请求头,然后在向服务器发起请求。
常见网络请求库:
- urllib/urllib3,
- requests,
- selenium(UI自动测试,动态js渲染)
- appium(手机App的爬虫或UI测试)
数据解析:
- re正则
- xpath
- bs4
- json
序列化:把对象转换成字符串或者字节
反序列化:字符串或者字节转换成对象(字典,数组等)
序列化就是为了方便网络间的信息传输,字节码。
数据存储:
- pymysql
- mongodb
多任务库:
- 多线程(threading),线程队列queue
- 协程(asynio, gevent / eventlet)
爬虫框架:
- scrapy
- scrapy-redis(分布式)多机器爬虫
反爬虫策略:
- UA策略(user-agent)
- 登录限制(cookie)
- 请求频次(IP代理)
- 验证码(图片-云打码,滑块,文字或图片的选择)
- 动态js(Selenium/Splash/api接口)策略
scrapy
- request和beautifulsoup都是库,scrapy是框架
- scrapy框架中可以加入request和beautifulsoup
- scrapy基于twisted,性能是最大的优势
- scrapy内置的css和xpath selector非常方便,beautifulsoup(纯python写的)最大的缺点就是慢。
爬虫去重策略: