scrapy学习记录
2016-10-25 15:02
169 查看
scrapy是一个用来爬取一个或多个网站的数据,提取数据的应用框架。下载过程非常复杂,而且会遇到各种问题。所以写个博客来记录下。
安装好python2.7之后,就可以开始。安装scrapy前还需要安装其他的库,都放在云盘里了地址是http://pan.baidu.com/s/1hsFh836,基本都是exe文件,直接安装就可以,用的是window64位,里面有个不是exe的文件,用pip install安装即可,都安装好了之后,就可以pip install scrapy安装scrapy了。要验证某个库是否安装成功,import 库名就行,没提示错误就代表安装成功。
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或者包含二者的列表
XMLFeedSpider, CSVFeedSpider,SitemapSpider感觉不常用,先略过
安装好python2.7之后,就可以开始。安装scrapy前还需要安装其他的库,都放在云盘里了地址是http://pan.baidu.com/s/1hsFh836,基本都是exe文件,直接安装就可以,用的是window64位,里面有个不是exe的文件,用pip install安装即可,都安装好了之后,就可以pip install scrapy安装scrapy了。要验证某个库是否安装成功,import 库名就行,没提示错误就代表安装成功。
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感觉不常用,先略过
相关文章推荐
- 【Scrapy】学习记录2_爬虫Spider
- 【Scrapy】 selector 学习记录一(xpath、css)
- 学习搭建scrapy,记录遇到的问题
- 【Scrapy】 Requests 和 Response 学习记录五
- 爬虫框架Scrapy学习记录II--Selector学习
- scrapy学习记录0401
- Scrapy学习系列之Selenium + Chrome + Xpath实践记录
- 【Scrapy】学习记录3_编写简单爬虫
- 【Scrapy】 selector 学习记录二(re,set)
- Scrapy学习记录
- 【Scrapy】 selector 学习记录三(Selector详细介绍)
- Scrapy爬虫学习中遇到的问题记录
- 【Scrapy】学习记录1_一个基本的Scrapy项目
- 【Scrapy】 Feed exports 学习记录四
- 【学习记录】利用scrapy爬取论坛图片
- 开始学习使用写日志的方式来记录写程序做过的修改
- 我想博客园同我一起成长,在这里记录着我的工作、学习、生活!
- .NET WEB SERVICES 学习记录(三)
- 记录今天学习SQL遇到的一个小问题
- 动态网页学习:JSP学习笔记全记录