web crawler

web crawler

1.增量抓取

不简单的URL去重

“知了”优化 - WebMagic 调优

爬虫:5.增量爬取和去重

垂直型爬虫

垂直爬虫不同于通用爬虫,其目的在于解决如何快速高效定制,精确抽取网页内容,并保存为结构化数据。

登录

cookie的处理

Python爬虫入门六之Cookie的使用

1.opener

1
2
3
4
5
6
7
8
9
10
11
12
import cookielib
#声明一个CookieJar对象实例来保存cookie
cookie = cookielib.CookieJar()
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler=urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#此处的open方法同urllib2的urlopen方法,也可以传入request
response = opener.open('http://www.baidu.com')
for item in cookie:
print 'Name = '+item.name
print 'Value = '+item.value

2.cookielib

cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。Cookielib模块非常强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。它们的关系:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar

Python 爬虫Cookie的处理

1.使用python自带的模块cookielib

2.requests通过session来保持cookies,自动存入文件和从文件中导入.

Python中Cookie的处理:自动处理Cookie,保存为Cookie文件,从文件载入Cookie

Python中自动处理Cookie,将Cookie保存到文件,从文件中读取Cookie。

模拟浏览器实现登录

爬虫之登陆验证

​ 关于模拟浏览器的介绍写得很详细。

实例

模拟登录一些知名的网站,为了方便爬取需要登录的网站

代理

https://proxy.peuland.com的代理脚本:

https://github.com/mapleray/proxy_pool/blob/master/proxy.py

request库

Python Requests库:HTTP for Humans

工具列表

Python 爬虫的工具列表 附Github代码下载链接

项目实例

使用 Python 轻松抓取网页

知乎专栏里面有很多。如:

手把手教你写电商爬虫-第一课 找个软柿子捏捏

要点总结

Python爬虫的一些总结

常用库:

  • 抓取网页: 常用的有requests, urllib.
  • 解析: BeautifulSoup, lxml, re.
  • 框架: scrapy, pyspier.
  • url去重: bloomfilter
  • 图片处理: Pillow
  • OCR: Google 的 OCR 开源库 tesseract,对应的Python包是pytesser.
  • 代理: 代理Tor, PySocks
  • 消息队列: rabbitmq

要点:

异步爬取:

​ 可以使用grequests库,或者对于简单的爬虫,tornado文档有个demo,稍微改下自己用。

模拟浏览器:

​ 给请求加上header信息

提交表单:

​ 一般是查找html源代码找到form,然后看form提交的地址,就可以直接使用requests的post方法提交数据。

模拟登录:

​ requests有个Session模块,使用起来很方便。有些网站如果是需要登录的,我们可以直接把登录后自己的cookies复制下来,直接作为requests的cookies参数传进去。

验证码:

​ ocr

动态加载:

​ 1)追踪发出的请求,直接模拟 2)selenuim + phantomJS

Python 爬虫进阶必须的几步

  1. requests 模块, beautifulsoup模块, css选择器语法, re 正则模块, http 头编写, cookies, json解析等一定要掌握至熟练及以上程度.
  2. 爬取重 ajax 页面, 推荐谷歌优先搜索 phantomjs, 其次selenium.
  3. 破解图片验证码, 推荐谷歌开源库 pytesser, 进一步深入可以学习<高等数学-线性代数>, 谷歌搜索 pandas, numpy, k近邻算法.
  4. 过滤器, 推荐布隆过滤器 .
  5. 分布式爬虫(消息队列). 推荐 rabbitmq.
  6. 任务调度. 推荐谷歌搜索 schedule.

进阶的第一门课一定得是学会自己抓包,分析请求和返回数据。这当中会有一些字段恶心到你,比如通过base64或者md5加密,在模拟登陆验证中通常还会遇到RSA算法。如果你说你懒得学,那么上大杀器Selenium,但是你要忍受它对系统资源的占用(往往要启动浏览器和多个标签页)和不那么快速的爬取速度。

针对一些网站的爬取就像是在玩攻防,网站设置了种种反抓取的坑等着你掉进去。这时候你要学会维护好自己的User-Agent,维护好自己的Cookie池,维护好自己的代理IP池,添加恰当的Host和Referer,以让对方服务器觉得这一切看起来都跟真的一模一样,那么你的爬虫开发能力,已经入门了。

到此为止,这些知识还和 Python 没有半毛关系,但你知道了要干什么之后,再去搜 Python 相关的工具库,你就会发现原来 Requests 可以轻松构造一个包含自定义 payload 和 headers 的 post 请求;你就会发现原来 Scrapy 中可以使用TCP包注入来伪造IP,还能玩SYN FLOOD拒绝服务攻击(误)……

Python爬虫:一些常用的爬虫技巧总结

1.cookies处理

cookies是某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密),python提供了 cookielib模块用于处理cookies,cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用 来访问Internet资源。

关键在于CookieJar(),它用于管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中,对 CookieJar实例进行垃圾回收后cookie也将丢失,所有过程都不需要单独去操作。

综合教程

Python爬虫学习系列教程

爬虫

python爬虫开发

Python入门网络爬虫之精华版

爬虫入门讲解:基础理论篇