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. Code the Tree

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2292   Accepted: 878 Description A tree ...

  2. 3905 - Meteor

    The famous Korean internet company nhn has provided an internet-based photo service which allows The ...

  3. python(6)-执行shell命令

    可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen*          --废弃 popen2.*           --废弃 commands.* ...

  4. python(6)- shelve模块

    前面学习了pickle,这两个可以将数据持久化存储到硬盘上,在实际应用中,我们可能会多次将数据dump到同一文件里,试一下: import pickle data = {'k1':123, 'k2': ...

  5. 给jdk写注释系列之jdk1.6容器(3)-Iterator设计模式

    前面讲了两种List,一种基于数组实现的ArrayList,一种基于链表实现的LinkedList,这两种list是我们工作中最常用到的List容器.当然数组和链表也是两种常见的基本数据结构,其他基本 ...

  6. 4k 对齐,你准备好了吗?

    什么是 4k 对齐? 其实与 “ 4K对齐 ” 相关联的是一个叫做 “ 高级格式化 ” 的分区技术.“ 高级格式化 ” 是国际硬盘设备与材料协会为新型数据结构格式所采用的名称.这是主要鉴于目前的硬盘容 ...

  7. C# 计算文件的 Hash 值

    /// <summary> /// 提供用于计算指定文件哈希值的方法 /// <example>例如计算文件的MD5值: /// <code> /// String ...

  8. 也谈Asp.net 中的身份验证

    钱李峰 的这篇博文<Asp.net中的认证与授权>已对Asp.net 中的身份验证进行了不错实践.而我这篇博文,是从初学者的角度补充了一些基础的概念,以便能有个清晰的认识. 一.配置安全身 ...

  9. 【网络收集】数据库中字段类型对应C#中的数据类型

    数据库中字段类型对应C#中的数据类型: 数据库 C#程序 int int32 text string bigint int64 binary System.Byte[] bit Boolean cha ...

  10. jquery 解析xml字符串

    // 函数功能:把xml字符串转换成对象 function convertXmlStringToObj(xmlString) { var xmlObj = new Object; var xmlDoc ...