用Python写网络爬虫(六):Scrapy

Scrapy Scrapy组件 engine:用来控制整个系统所有组件间的数据流,在特定动作发生时触发事务; spider:分析器,用于解析response,抓取数据,返回items和新的request; downloader:下载器,接收request下载网页内容,并将结果response返回给spider;...

用Python写网络爬虫(五):验证码处理

验证码处理 验证码(CAPTCHA)的全称为全自动区分计算机和人类的公开图灵测试(Completely Automated Public Turing test to tell Computersand Humans Apart)。验证码用于测试用户是否为真实人类。 自动化处理字符验证码主要有光学字符识别(OCR)和验证码处理API(打码平台)。 光学字符识别OCR...

用Python写网络爬虫(四):动态内容和表单交互

动态内容 逆向动态网页 依赖于AJAX的网站虽然看起来更加复杂,但是其结构促使数据和表现层分离,因此抽取数据时会更加容易。 通过网络请求抓包工具,查看AJAX请求,分析其模式,使用requests库模仿其请求模式,获得内容。一般来讲返回的都是xml或者json等序列化的数据,十分方便。 渲染动态网页...

用Python写网络爬虫(三):下载缓存和并发下载

由于并发下载实在没有啥写的东西,不如就合并到这一节吧。 下载缓存 当需要抓取的数据发生变化时,我们需要重新下载整个网站。对于大型网站而言,重新抓取可能需要耗费几个星期的时间。一种可行的方式是对已爬取网页进行缓存的方案,可以让每个网页之下载一次。 添加缓存支持 使用回调添加缓存支持后,下载的流程是这样的: 接收一个新的URL; 该URL是否已被缓存; 如果已经缓存,检查: -...

用Python写网络爬虫(二):数据抓取

数据抓取 从网页中抽取数据用于后续处理,这种做法称为抓取(scraping)。 正则表达式 优点:能够简短地把需要的数据抓取出来。在一次性数据抓取中非常有用,此外还可以避免解析整个网页带来的开销; 缺点:网页更新后易失效,健壮的正则表达式又存在难以构造、可读性差的问题。 Beautifulsoup 漂亮汤是一个非常流行的Python模块。该模块可以解析网页,并提供定位内容的便捷接口。...

用Python写网络爬虫(一):网络爬虫简介

网络爬虫简介 合法性和注意事项 根据世界各地法院的一些案件: 如果抓取数据的行为用于个人使用,则不存在问题; 如果用于转载,则数据应该是现实生活中的真实数据(营业地址、电话清单等);如果是原创数据(意见和评论),通常就会受到版权限制,而不能转载。 作为爬虫的自觉:约束自己的抓取速度,伪装成正常用户,使用浏览器UA来标识自己。 背景调研 检查robots.txt文件...