2016年9月21日09:21:43
1.爬虫的抓取周期:
(1)首先生成初始请求爬第一个url,并指定一个回调函数被称为与下载这些请求的响应。
(2)第一个请求执行通过调用 start_requests()方法(默认情况下)生成 Request中指定
的url start_urls和 parse方法作为请求的回调函数。
(3)在回调函数中,解析响应(网页),并返回与提取的数据字典, Item对象, Request这
些对象的对象,或一个iterable。这些请求还将包含一个回调(也许相同),将由Scrapy然后
下载他们的反应由指定的回调。
(4)在回调函数中,您解析页面内容,通常使用 选择器(但您还可以使用BeautifulSoup,
lxml或其他机制你喜欢)与解析数据并生成项目。
(5)最后,返回的物品爬虫通常会保存到数据库(在一些 项目管道)或写入一个文件使用
Feed exports.
2.爬虫属性值设定
Spider:
(1)name 爬虫名字
(2)allowed_domains 爬虫允许的域名
(3)start_urls 网址的列表
(4)custom_settings 爬虫的设置(包括了下载中间件、两次下载间隙、下载超时、下载最大值
日志开启、日志文件位置、日志等级(默认debug)、
标准输出是否存入日志、存储debug、随机下载延迟、用户代理(流浪器))
(5)crawler 绑定当前爬虫的Crawler对象
(6)settings Settings类的一个实例,包含成员函数(from_crawler(crawler,*args,**kwargs)创建爬虫、
start_request():无指定URL时调用、
make_requests_from_url(url)为url生成start_url、
parse(response)处理爬虫得到的数据、
log(message[level,component])、
closed(原因))
CrawlSpider:通用型爬虫,继承Spider
(1)rules rule的列表,定义爬虫特定行为
rule: scrapy.spiders.Rule(link_extractor(链接提取器),callback=None(是否回调),
cb_kwargs=None(传递给回调函数的参数(keyword argument)的字典),
follow=None(指定了根据该规则从response提取的链接是否需要跟进),
process_links=None(过滤链接),
process_request=None(提取到每个request时都会调用该函数,过滤request))
XMLFeedSpider:通过迭代各个节点分析XML源
(1)iterator:用于确定使用哪个迭代器的字符串属性
iternodes:推荐,基于正则表达式的快速迭代器
xml 使用 Selector 的迭代器,使用DOM存取,数据量大时会出现问题
html 使用 Selector 的迭代器,使用DOM存取,数据量大时会出现问题
(2)itertag 迭代起点字符串
(3)namespace 一个由(prefix,url)元组所组成的list,定义改文档中会被Spider处理的可用的namespace,
prefix 及 uri 会被自动调用 register_namespace() 生成namespace
(4)adapt_response(response) 接受一个response并返回一个response(可以相同也可以不同)
(5)parse_node(response,selector) 节点符合提供的标签名时(itertag)该方法被调用,
返回一个 Item 对象或者 Request 对象 或者一个包含二者的可迭代对象(iterable)
(6)process_results(response,results) spider返回结果(item或request)时该方法被调用,返回一个结果的列表
CSVFeedSpider:类似于XMLFeedSpider的爬虫,除了遍历模式为按其行遍历,每次迭代是使用parse_row()
(1)delimiter csv文件中用于区分字段的分隔符,默认‘,’
(2)headers csv文件中包含用来提取字段的行的列表
(3)parse_row(response,row) 可以覆盖 adapt_response 及 process_results 方法来进行预处理(pre-processing)
及后(post-processing)处理
SitemapSpider:通过SiteMaps(网站地图)来发现爬取的URL,能从robotos.txt中获取sitemap的url
(1)sitemap_urls 爬取的url的sitemap的url列表(list)。 您也可以指定为一个 robots.txt ,
spider会从中分析并提取url
(2)sitemap_rules 一个包含 (regex, callback) 元组的列表(list)
regex 匹配网站地图提供的URL的正则表达式
callback 指定了匹配正则表达式的url的处理函数
(3)sitemap_follow 匹配要跟进的sitemap的正则表达式的列表
(4)sitemap_alternate_links url有可选连接时,是否跟进,默认关闭
PythonCrawl自学日志(3)的更多相关文章
-
PythonCrawl自学日志
2016-09-10 PythonCrawl自学日志 1.python及Selenium的安装 (1)开发环境使用的是VS2015 Community.python3.5.Selenium3.0BET ...
-
PythonCrawl自学日志(4)
2016年9月22日10:34:02一.Selector1.如何构建(1)text构建: body = '<html><body><span>good</sp ...
-
PythonCrawl自学日志(2)
一.Scrapy环境的安装 1.配套组件的安装 由于开发环境是在VS2015Community中编码,默认下载的python3.5,系统是windows8.1,为此需要安装的组件有如下列表: 所有的组 ...
-
Python自学日志_2017/9/05
9月5日今天早晨学习了网易云课程<Python做Web工程师课程>提前预习课程<学会开发静态网页>.轻松的完成了第五节课的两个实战作业--感觉自己这几天的功夫没有白费,总算学会 ...
-
python自学日志--基础篇(1)
从认识python,到学习python,中间经历了挺长一段时间的心理挣扎.人总是对未知的事物有着天生的恐惧感,但是,人又是对未知充斥好奇.所以在最后,还是推开了这扇门,开始学习python. pyth ...
-
VUE自学日志01-MVC和MVVM
一.需要了解的基础概念 Model(M)是指数据模型,泛指后端进行的各种业务逻辑处理和数据操控,主要围绕数据库系统展开.这里的难点主要在于需要和前端约定统一的接口规则. View(V)是视图层,也就是 ...
-
VUE自学日志02-应用与组件实例
准备好了吗? 我们刚才简单介绍了 Vue 核心最基本的功能--本教程的其余部分将更加详细地涵盖这些功能以及其它高阶功能,所以请务必读完整个教程! 应用 & 组件实例 创建一个应用实例创建一个应 ...
-
Appium自动化测试教程-自学网-monkey日志管理
日志管理作用 Monkey日志管理是Monkey测试中非常重要的一个环节,通过日志管理分析,可以获取当前测试对象在测试过程中是否会发生异常,以及发生的概率,同时还可以获取对应的错误信息,帮助开发定位和 ...
-
从零自学Hadoop(22):HBase协处理器
阅读目录 序 介绍 Observer操作 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Sour ...
随机推荐
-
Markdown简单语法
Content 标题大小 斜体和加粗 分割线 有序列表和无序列表 链接 代码框 标题大小 在字体下方加上-和=分别表示一级标题和二级标题,例如: 一级标题 --- 二级标题 === 或者使用#的个数表 ...
-
从LIS问题浅谈动态规划
今天以LIS问题切入动态规划,现在做一些简单的总结. LIS问题: http://www.cnblogs.com/Booble/archive/2010/11/27/1889482.html
-
2016-08-05(1) ng-options的用法详解
http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/ng-options-usage/
-
Xamarin提示Build-tools版本过老
Xamarin提示Build-tools版本过老 错误信息:G:\XamarinDemo\Xamarin.Forms-master\packages\Xamarin.Android.Support.V ...
-
Android(java)学习笔记120:Android中的Application类用法
1.简介 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型:而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是 ...
-
MyEclips:Struts 2 + Hibernate 4 + SQL Server2008
步骤一:准备 1.下载 sqlJDBC.jar的下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=21599 Hibernate ...
-
第三篇:python基础之编码问题
python基础之编码问题 python基础之编码问题 本节内容 字符串编码问题由来 字符串编码解决方案 1.字符串编码问题由来 由于字符串编码是从ascii--->unicode---&g ...
-
(2015年郑州轻工业学院ACM校赛题) C 数列
在我们做完B题之后就去看C题了, 发现很多人都已经做出来了, 并且一血还是我们学弟拿的, 感觉这题不难, 我们举了几个例子之后发现全是Alice 然后我们就决定意淫一下,试试看! 没想到就A了 - . ...
-
Codeforces Round #375 (Div. 2)A. The New Year: Mee
A. The New Year: Meeting Friends time limit per test 1 second memory limit per test 256 megabytes in ...
-
ul+jquery自定义下拉选择框
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...