爬虫
爬虫的构成
- 下载器:downloader
- 解析器:parser
- 调度器:dispatcher
- 线程池
- 协程池
怎样开始一个爬虫
- 确定抓取目标
- 页面分析
- 流程规划
- 存储规划
页面解析
- css selector
- xpath
- json
- regexp
任务调度
- 多线程
- 多进程
- RPC
- Queue
分布式爬虫
常遇到的问题
- JS 页面
- Phantomjs
- 常规页面无需使用
- 反爬虫策略
- ip:
- 抓取代理 IP 库
- 代理分为匿名代理和透明代理
- socks5 代理协议
- requests.get(url,
proxies={‘http’: ‘socks5://127.0.0.1:1080’,
‘https’: ‘socks5://127.0.0.1:1080’}
)
- cookie
- phantomjs等 清空当前 cookie
- 验证码
- 主要依赖前两部
- UserAgent
- 伪造
- ip:
- JS 页面
常用库介绍
手机搜狐页面测试
- 递归下载手机搜狐的所有链接
- 相同链接只访问一次
- 只访问域名是 m.sohu.com 链接
- 并发执行
垃圾处理 (GC)
- 引用计数 + 1