数据来源
爬取的数据来源于网络,网络中数据可以是由:Web服务器(Nginx/Apache)、数据库服务器(MySQL/Redis)、索引库(ElastichSearch)、大数据(Hbase/Hive)、视频/图片库(FTP)、云存储等(OSS)提供的。
爬虫与web后端服务的关系
爬虫使用网络请求库,相当于客户端请求,web后端服务根据请求响应数据。
爬虫即向web服务器发起http请求,正确地接收响应数据,然后根据数据的类型(Content-Type)进行数据的解析及存储。
爬虫程序在发起请求前,需要伪造成浏览器(User-Agent指定请求头),然后再向服务器发起请求。
相关技术
使用python编写的爬虫脚本可以完成:定时、定量、指定目标(Web站点)的数据抓取。
主要使用多(单)线程/进程、网络请求库、数据解析、数据存储、任务调度等相关技术。
接口测试、功能性测试、性能测试和集成测试。
网络请求
- urllib
- requests/urllib3
- selenium
- appium(手机app爬虫/UI测试)
数据解析
- re正则
- xpath
- bs4
- json
数据存储
- pymysql
- MongoDB
- elasticsearch
多任务库
- 多线程(threading)、线程队列quene
- 协程(asynio、gevent/eventlet)
爬虫框架
- scrapy
- scrapy-redis 分布式(多机爬虫)
常见反爬策略
- UA(User-Agent) 策略
- 登录限制(Cookie) 策略
- 请求频次(IP代理) 策略
- 验证码(图片-云打码、文字或物件图片选择验证、滑块) 策略
- 动态JS(Selenium/Splash/查找api接口) 策略