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)的更多相关文章

  1. PythonCrawl自学日志

    2016-09-10 PythonCrawl自学日志 1.python及Selenium的安装 (1)开发环境使用的是VS2015 Community.python3.5.Selenium3.0BET ...

  2. PythonCrawl自学日志(4)

    2016年9月22日10:34:02一.Selector1.如何构建(1)text构建: body = '<html><body><span>good</sp ...

  3. PythonCrawl自学日志(2)

    一.Scrapy环境的安装 1.配套组件的安装 由于开发环境是在VS2015Community中编码,默认下载的python3.5,系统是windows8.1,为此需要安装的组件有如下列表: 所有的组 ...

  4. Python自学日志_2017/9/05

    9月5日今天早晨学习了网易云课程<Python做Web工程师课程>提前预习课程<学会开发静态网页>.轻松的完成了第五节课的两个实战作业--感觉自己这几天的功夫没有白费,总算学会 ...

  5. python自学日志--基础篇(1)

    从认识python,到学习python,中间经历了挺长一段时间的心理挣扎.人总是对未知的事物有着天生的恐惧感,但是,人又是对未知充斥好奇.所以在最后,还是推开了这扇门,开始学习python. pyth ...

  6. VUE自学日志01-MVC和MVVM

    一.需要了解的基础概念 Model(M)是指数据模型,泛指后端进行的各种业务逻辑处理和数据操控,主要围绕数据库系统展开.这里的难点主要在于需要和前端约定统一的接口规则. View(V)是视图层,也就是 ...

  7. VUE自学日志02-应用与组件实例

    准备好了吗? 我们刚才简单介绍了 Vue 核心最基本的功能--本教程的其余部分将更加详细地涵盖这些功能以及其它高阶功能,所以请务必读完整个教程! 应用 & 组件实例 创建一个应用实例创建一个应 ...

  8. Appium自动化测试教程-自学网-monkey日志管理

    日志管理作用 Monkey日志管理是Monkey测试中非常重要的一个环节,通过日志管理分析,可以获取当前测试对象在测试过程中是否会发生异常,以及发生的概率,同时还可以获取对应的错误信息,帮助开发定位和 ...

  9. 从零自学Hadoop(22):HBase协处理器

    阅读目录 序 介绍 Observer操作 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Sour ...

随机推荐

  1. DAG上动态规划

    很多动态规划问题都可以转化为DAG上的最长路,最短路,或路径计数问题. 硬币问题: 有N中硬币,面值分别为v1,v2,v3,……vn,每种都无穷多,给定非负整数S,可以选用多少个硬币,使他们的总和恰好 ...

  2. HDU 1978 How many ways (DP)

    How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  3. 在Visual Studio 的 “一般处理程序 ” .ashx 文件中如何创建Session 对象

    只需要继承这个接口即可实现创建Session对象.  IHttpHandler,System.Web.SessionState.IHttpSessionState 代码示例: public class ...

  4. LoadRunner 如何进行接口的压力测试

    主要压测的时候需要开发提供相关接口文档,或者自己录制.左侧的Name都是开发提供的接口参数名称,Value是相应的参数值.Action为开发给的测试地址.PS:注意在测试的时候设置Controller ...

  5. HttpClient(4.3.5) - HttpClient Proxy Configuration

    Even though HttpClient is aware of complex routing scemes and proxy chaining, it supports only simpl ...

  6. Quartz Scheduler(2.2.1) - Working with TriggerListeners and JobListeners

    TriggerListeners and JobListeners Listeners are objects that you create to perform actions based on ...

  7. Django学习--9 多对一关系模型

    保持前面的不变只是增加了一些 1.vim sdj/models.py class Blog(models.Model):        name = models.CharField(max_leng ...

  8. Android Studio 创建aar包与引用

    两者区别:*.jar: 只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件.*.aar: 包含所有资源 ,class以及res资源文件全部包含 一.创建aar包1.创建一个 ...

  9. js,css 和 html 分离,见仁见智

    信经常观察大站的朋友都会发现,他们都把CSS写在HMTL页面里,一个页面的或者多个页面的背景图片,都集成到一张图片里,他们有的JS文件,也写到页面里了……也许你会迷惑,现在到处讲页面的优化,不都是要把 ...

  10. 解决oracle归档日志写满了(ORA-00257)的问题

    解决ORA-00257: archiver error. Connect internal only, until freed 此问题属于归档日志满了. 解决办法: SQL> select * ...