scrapy中文手册笔记(一)
来源:互联网 发布:新浪云数据库怎么连接 编辑:程序博客网 时间:2024/05/22 12:52
scrapy模块的spider
1、spider
spider类,定义爬取行为。开始运行的时候,用初始的URL,来初始化Request,并且设置回调函数,默认为parse函数。当request下载完毕且返回时,生成一个response,然后将response作为参数传递给回调函数。
spider中初试的request是通过调用start_requests()来获取的,start_requests()读取start_urls中的url,并以parse为回调函数生成Request。
在回调函数内分析返回的内容,返回item对象,或者request,或者包含二者的,一个可迭代容器。在回调函数内可以使用自带的选择,selector来分析网页内容,并根据分析的数据,生成item。也可以使用其他的bs4,或者lxml等库。
最后,生成的item进行存储或者其他处理(例如在pipelines中)。
具体运行的spider格式可以使用模版快速创建,scrapy genspider -t basic myspider 允许爬取域名。sipder格式如下:
import scrapy#导入处理数据的那个itmes类from myproject.items import myitemclass myspider(scrapy.spider): #爬虫名字 name = "myspider" #允许爬取的域名 allowed_domains = ['域名'] #开始爬取的初始链接 start_urls = [url1,url2....] #回调函数parse,传入response,并且使用itmes类来结构化数据 def parser(self,response): #实例化items的数据结构化的那个类,并且输入进数据 item = myitem() item["..."] = .. ...
2、spider的参数传递
如果要运行的爬虫,爬取的网址,不再start_urls中,而是需要在运行爬虫的时候自行设定(或者限制爬取网站的内容,例如允许爬取的域名),那么就需要给运行的spider传入参数。启动爬虫时使用命令:scrapy crawl spidername -a 参数名= 参数值.
import scrapy#导入处理数据的那个itmes类from myproject.items import myitemclass myspider(scrapy.spider): name = "myspider" allowed_domains = ['域名'] #由于传入了起始链接,所以默认的开始链接列表并不起作用 start_urls = [url1,url2....] def __init__(self,startUrl=None,*args,**kwargs): super(myspider,self).__init__(*args,**kwargs) self.start_urls = [startUrl] def parser(self,response): #实例化items的数据结构化的那个类,并且输入进数据 item = myitem() item["..."] = .. ... #暂不详细讨论
3、内置的spider
scrapy提供了很多内置的spider,根据具体情况,来为我们提供继承
(1)Spider
class scrapy.spider.Spider,是所有的spider的基类,所有的sipder必须继承这个基类,无论是模板还是自己写的spider。
(随笔感想,未完待续…)
- scrapy中文手册笔记(一)
- scrapy中文手册笔记(二)
- GCC 中文手册(一)
- phpGACL中文手册(一)
- Scrapy框架学习笔记(一)
- Scrapy 学习笔记(一)
- Scrapy学习笔记一
- ANTLR中文手册一(致谢)
- GNU-make中文手册 读书笔记(一)
- EXT中文手册续(一)
- Qt5.9.1 qmake中文手册(一)
- Tomcat中文手册(一)
- Scrapy源码分析-Spiders爬虫中文文档(一)
- Scrapy框架学习笔记(一)
- Scrapy学习笔记一:安装
- 《HTML5开发手册》学习笔记(一)
- Python自学手册笔记(一)
- 【python爬虫】scrapy框架笔记(一):创建工程,使用scrapy shell,xpath
- flask+mysql+highcharts监控内存
- LoadRunner中如何对用户名、密码同时参数化
- 安卓测试小工具
- 技术博客004
- nutch和solr
- scrapy中文手册笔记(一)
- Android Studio安装及配置过程中出现的问题
- sql里的 DML语法结构
- Android启动过程深入解析
- 在PhpStorm下配置SVN(腾讯云),Jenkins实时复制SVN仓库内容到指定文件夹(腾讯云)
- 2017中国行业云计算峰会-金融云即将于7月举办
- VS2015---指针---1
- javascript笔记(五)
- 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”