爬虫综述

什么是爬虫

一句话: get网页就是爬虫。

from urllib.request import urlopen
print(urlopen('wwww.baidu.com').read())

基本流程

几个环节:Get->Extract->Store
从一个start_url开始,一般先抓列表页,然后抓详情页

利器

抓包工具:chrome/ charles
调试工具: paw/ ipython
发请求:urllib.request/ requests
抽取信息: re/ lxml/ pyquery/ parsel (css选择器、 xpath选择器)

反爬虫

  • User-Agent、Referrer检测 -> Cosplay, 伪装User-Agent、Referrer
  • 登录限制 -> 模拟登录
  • 封IP -> 用代理, 用ADSL不断拨号换ip
  • 验证码限制 -> 调用验证码识别api(机器识别、人工打码服务)
  • 接口加签名 -> 逆向破解
  • 频率限制 -> 放慢频率
  • 封账号 -> 购买一大堆小号
  • 动态内容 -> Selenium、Phantomjs
  • 投毒(返回虚假数据) -> 细心验证

容错机制

  • 如果是频率过快,可以暂停一段时间再发请求,或者换号、换ip
  • 如果是301/ 302则重定向到新url。requests库默认会自动重定向即requests.get(‘http://github.com‘, allow_redirects=True)
  • 如果是400/ 401/ 403/ 404/ 500,直接跳过
  • 如果是网络问题,可以进行重试N次

存储

  • csv (直接open写文件即可)
  • excel (pip3 install XlsxWriter)
  • sqlite (python自带,直接import sqlite3)
  • mysql (pip3 install mysqlclient)
  • redis (pip3 install redis)
  • mongodb (pip3 install pymongo)

通过并发提高吞吐量

  • 多进程
  • 多线程
  • 协程
  • 异步
  • celery

爬虫框架

主要有scrapy、pyspider
用现成的框架的好处就是不用担心 cookie、retry、timeout、频率限制、并发、去重的事,甚至有shell、web UI、监控等。可以使用现成的Middewares或者自定义Middewares。方便维护user-agent池、cookie池、ip池。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值