scrapy学习记录

scrapy是一个用来爬取一个或多个网站的数据,提取数据的应用框架。下载过程非常复杂,而且会遇到各种问题。所以写个博客来记录下。

安装好python2.7之后,就可以开始。

pip install scrapy安装的时候可能会报错Twisted库安装失败,需要去找对应的平台的whl文件。地址是https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

pip install Twistedxxx.whl 安装twisted完之后重新pip install scrapy即可

scrapy的教程链接http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/overview.html,是中文的官方文档(如果我没搞错的话),基本都是中文,不排除有些地方没翻译完全。里面有基本的实例,教你怎么用scrapy写爬虫,但是,提供的start_url里的url貌似被墙了,所以你跟着教程来爬不到任何东西,不过没关系,至少我们了解了一些基本的知识。除了基本实例,还有各种用到的类的详细说明。

Item类其实就是一个字典,用法和字典一毛一样。

Spider类在我看来是最重要的。Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。个人觉得这些其实就是爬虫的核心。其中的参数有name,allowed_domains,start_url,parse方法其实不止这些,这些只是创建项目的时候就创建好的。

name就是爬虫的名字喽,必须是唯一的。

allowed_domains就是域名白名单,我一直不明白是什么意思,大概是限制爬虫爬取的东东吧,防止爬虫其他的不是我们想要的地方。不知道这样理解对不对

start_url是爬虫最先开始爬取的url列表

start_requests()方法返回一个可迭代对象,包含了爬取到的第一个Request。当spider启动爬取并且未制定URL时,该方法被调用。如果指定了url(start_url),该方法会调用make_requests_from_url(url)来生成一个Request对象,。如果没有指定url,该方法也会被调用。该方法的默认实现是使用 start_url 的url生成Request。我是这么理解的。可以被重写

parse方法是当response没有指定回调函数时,scrapy处理下在的response的默认方法,该方法及其他的Request回调函数必须返回一个包含 Request 及(或) Item 的可迭代的对象。

log(),closed()功能和名字一样。

CrawlSpider类继承自Spider类,提供了一个新的属性rules,也提供了要给可复写的方法

rule是一个包含一个或者多个Rule对象的集合

parse_start_url(response)当start_url请求返回,该方法被调用,分析最初的返回值并返回一个Item对象或者一个Reqeust对象或者包含二者的可迭代对象

link_extractor是一个Link Extractor对象。定义了如何冲爬取的页面提取链接。

callback从link_extractor中每获取到链接时将会调用该函数,接受一个response作为第一个参数,并返回一个Item或者Request或者包含二者的列表

cb_kwargs 包含传递给回调函数的参数(keyword argument)的字典。

follow 是一个布尔(boolean)值,指定了根据该规则从response提取的链接是否需要跟进。 如果 callback 为None, follow 默认设置为 True ,否则默认为 False 。

process_links 是一个callable或string(该spider中同名的函数将会被调用)。 从link_extractor中获取到链接列表时将会调用该函数。该方法主要用来过滤。

process_request 是一个callable或string(该spider中同名的函数将会被调用)。 该规则提取到每个request时都会调用该函数。该函数必须返回一个request或者None。 (用来过滤request)

XMLFeedSpider, CSVFeedSpider,SitemapSpider感觉不常用,先略过

 

posted @ 2016-10-25 15:02  菲菲菲菲菲常新的新手  阅读(296)  评论(0编辑  收藏  举报