Scrapy 笔记(一)】的更多相关文章

摘要:介绍了使用Scrapy处理JSON API和AJAX页面的方法 有时候,你会发现你要爬取的页面并不存在HTML源码,譬如,在浏览器打开http://localhost:9312/static/,然后右击空白处,选择“查看网页源代码”,如下所示: 就会发现一片空白 留意到红线处指定了一个名为api.json的文件,于是打开浏览器的调试器中的Network面板,找到名为api.json的标签 在上图的红色框里就找到了原网页中的内容,这是一个简单的JSON API,有些复杂的API会要求你先登录…
我已经使用了scrapy有半年之多,但是却一直都感觉没有入门,网上关于scrapy的文章简直少得可怜,而官网上的文档(http://doc.scrapy.org/en/1.0/index.html)对于一个初学者来说实在太不友好了,尤其是像我这种英语水平还未达到炉火纯青地步的程序员来说,读官方文档只能一知半解.直到后来遇到了这本神书 购买连接:http://shop.oreilly.com/product/9781784399788.do?sortby=publicationDate# 这本书是…
Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便. Item提供了类字典的API,并且可以很方便的声明字段,很多Scrapy组件可以利用Item的其他信息. 定义Item 定义Item非常简单,只需要继承scrapy.Item类,并将所有字段都定义为scrapy.Field类型即可 import scrapy class Product(scrapy.Item): name = scrapy.Field() pric…
Scrapy笔记01- 入门篇 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取(更确切来说,网络抓取)所设计的, 也可以应用在获取API所返回的数据(比如Web Services)或者通用的网络爬虫. Scrapy也能帮你实现高阶的爬虫框架,比如爬取时的网站认证.内容的分析处理.重复抓取.分布式爬取等等很复杂的事. 安装scrapy 我的测试环境是centos6.5 升级python到最新…
Scrapy笔记02- 完整示例 这篇文章我们通过一个比较完整的例子来教你使用Scrapy,我选择爬取虎嗅网首页的新闻列表. 这里我们将完成如下几个步骤: 创建一个新的Scrapy工程 定义你所需要要抽取的Item对象 编写一个spider来爬取某个网站并提取出所有的Item对象 编写一个Item Pipline来存储提取出来的Item对象 Scrapy使用Python语言编写,如果你对这门语言还不熟,请先去学习下基本知识. 创建Scrapy工程 在任何你喜欢的目录执行如下命令 scrapy s…
Scrapy笔记03- Spider详解 Spider是爬虫框架的核心,爬取流程如下: 先初始化请求URL列表,并指定下载后处理response的回调函数.初次请求URL通过start_urls指定,调用start_requests()产生Request对象,然后注册parse方法作为回调 在parse回调中解析response并返回字典,Item对象,Request对象或它们的迭代对象.Request对象还会包含回调函数,之后Scrapy下载完后会被这里注册的回调函数处理. 在回调函数里面,你…
Scrapy笔记04- Selector详解 在你爬取网页的时候,最普遍的事情就是在页面源码中提取需要的数据,我们有几个库可以帮你完成这个任务: BeautifulSoup是python中一个非常流行的抓取库, 它还能合理的处理错误格式的标签,但是有一个唯一缺点就是:它运行很慢. lxml是一个基于ElementTree的XML解析库(同时还能解析HTML), 不过lxml并不是Python标准库 而Scrapy实现了自己的数据提取机制,它们被称为选择器,通过XPath或CSS表达式在HTML文…
Scrapy笔记05- Item详解 Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便. Item提供了类字典的API,并且可以很方便的声明字段,很多Scrapy组件可以利用Item的其他信息. 定义Item 定义Item非常简单,只需要继承scrapy.Item类,并将所有字段都定义为scrapy.Field类型即可 import scrapy class Product(scrapy.Item): name =…
Scrapy笔记06- Item Pipeline 当一个item被蜘蛛爬取到之后会被发送给Item Pipeline,然后多个组件按照顺序处理这个item. 每个Item Pipeline组件其实就是一个实现了一个简单方法的Python类.他们接受一个item并在上面执行逻辑,还能决定这个item到底是否还要继续往下传输,如果不要了就直接丢弃. 使用Item Pipeline的常用场景: 清理HTML数据 验证被抓取的数据(检查item是否包含某些字段) 重复性检查(然后丢弃) 将抓取的数据存…
Scrapy笔记07- 内置服务 Scrapy使用Python内置的的日志系统来记录事件日志. 日志配置 LOG_ENABLED = true LOG_ENCODING = "utf-8" LOG_LEVEL = logging.INFO LOG_FILE = "log/spider.log" LOG_STDOUT = True LOG_FORMAT = "%(asctime)s [%(name)s] %(levelname)s: %(message)s&…