python爬虫的实战思路
3.1Requests+正则表达式爬取猫眼电影TOP100
- 抓取单⻚内容
利⽤requests请求⽬标站点,得到单个⽹⻚HTML代码,返回结果。 - 正则表达式分析
根据HTML代码分析得到电影的名称、主演、上映时间、评分、图⽚链接等信息。 - 开启循环及多线程
对多⻚内容遍历,开启多线程提⾼抓取速度。 - 保存⾄⽂件
通过⽂件的形式将结果保存,每⼀部电影⼀个结果⼀⾏Json字符串。
3.2分析Ajax请求并抓取今日头条街拍图片
-
抓取索引⻚内容
利⽤requests请求⽬标站点,得到索引⽹⻚HTML代码,返回结果。 -
抓取详情⻚内容
解析返回结果,得到详情⻚的链接,并进⼀步抓取详情⻚的信息。 -
下载图⽚与保存数据库
将图⽚下载到本地,并把⻚⾯信息及图⽚URL保存⾄MongoDB。 -
开启循环及多线程
对多⻚内容遍历,开启多线程提⾼抓取速度。
3.3Selenium+Chrome/PhantomJS爬取淘宝美食
- 搜索关键字
利⽤Selenium驱动浏览器搜索关键字,得到查询后的商品列表。 - 分析⻚码并翻⻚
得到商品⻚码数,模拟翻⻚,得到后续⻚⾯的商品列表。 - 分析提取商品内容
利⽤PyQuery分析源码,解析得到商品列表。 - 存储⾄MongoDB
将商品列表信息存储到数据库MongoDB。
3.4 用Flask+Redis维护代理池
3.4.1 为什么要用代理池
许多⽹站有专⻔的反爬⾍措施,可能遇到封IP等问题。
互联⽹上公开了⼤量免费代理,利⽤好资源。
通过定时的检测维护同样可以得到多个可⽤代理
3.4.2 代理池的要求
多站抓取,异步检测
定时筛选,持续更新
提供接⼝,易于提取
3.4.3 代理池的架构
3.4.4 使用
得到新的IP
localhost:5000/get
查看代理池数量
localhost:5000/count
3.5 用代理抓取微信文章
3.5.1 目标站点分析
- 抓取索引⻚内容
利⽤requests请求⽬标站点,得到索引⽹⻚HTML代码,返回结果。 - 代理设置
如果遇到302状态码,则证明IP被封,切换代理重试。 - 分析详情⻚内容
请求详情⻚,分析得到标题,正⽂等内容 - 将数据保存到数据库
将结构化数据保存⾄MongoDB
3.5 使用Redis+Flask维护动态cookies池
3.5.1为什么要⽤Cookies池
⽹站需要登录才可爬取,例如新浪微博
爬取过程中如果频率过⾼会导致封号
需要维护多个账号的Cookies池实现⼤规模爬取
3.5.2Cookies池的要求
自动登录更新
定时验证筛选
提供外部接口