爬虫前置知识

爬虫中要解决的问题

爬虫的采集和更新策略
解决反爬
数据解析
数据存储
模拟登陆(验证码识别)
爬虫的监控和部署
数据的驱虫(url去重,内容去重)

爬虫数据采集分类

采集对象分类

  • 全网采集
  • 全站采集
  • 具体网站的指定数据采集

采集方案分类

  • 利用http协议采集 - 页面分析
  • 利用api接口采集 - app数据采集
  • 利用目标网站的api采集 - 微博,github,twitter,facebook

多线程和线程池编程

并发和并行

并行是指两个或多个事件在同一时刻发生
并发石寨两个或多个时间在同一时间段发生
并行制的是多个cpu,并发主要是针对一个cpu
并发的目的是重复利用处理器的每一个核,以达到最高的处理性能
image.png
注意:IO操作所发给的时间比cpu处理时间要长很多

python的GIL真的会导致多线程慢吗?

image.png
image.png

线程池编程

  1. from concurrent.futures import ThreadPoolExecutor

动态网站数据抓取

Selenium

  • Selenium是一个用于Web应用程序测试的工具
  • Selenium可以直接操作浏览器,就下个真正的用户在操作一样
  • Selenium支持多种编程语言(java,python,javascript,c#,ruby),进行测试脚本的编写
  • Selenium支持在多个浏览器平台上执行测试
  • Selenium是一个工具集,有了这个工具集,我们可以顺利的开展自动化测试