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. 自定义JPA之AttributeConverter

    1. 执行类 public class BooleanConverter implements AttributeConverter<Boolean, Integer> { } 2. 属性 ...

  2. python(6)- hashlib模块

    加密算法: SHA1,SHA224, SHA256, SHA384, SHA512 , MD5 1. md5 import hashlib m = hashlib.md5() m.update(b&q ...

  3. yii2.0的gii生成代码bug

    自动生成代码真的很好用,能减少很多基础代码的编写,如果这些基础代码一个个手动去敲,即枯燥乏味,还容易出错(话说人类真的不适合做单调重复的工作),yii框架的gii自动生成代码工具就能减少很多工作量.前 ...

  4. 转:Nginx RTMP 功能研究

    看点: 1.    Nginx 配置信息与使用.  (支持 rtmp与HLS配置) 2.    有ffmpeg 编译与使用,    命令行方式来测试验证客户端使用. 转自:http://blog.cs ...

  5. 如何使用javascript书写递归函数

    递归函数大家都应该比较熟吧?那么,如何在javascript中书写一个完美的递归函数呢?且听我娓娓道来. 递归函数 写的时候,查了一下维基百科对递归函数的定义,恕我愚钝,简直太深奥了!所以,我还是简单 ...

  6. Linux 命令 - wc: 统计文件的行数、字数和字节数

    命令格式 wc [OPTION]... [FILE]... 命令格式 -c, --bytes 打印字节数. -m, --chars 打印字符数. -l, --lines 打印行数. -L, --max ...

  7. Linux 命令 - ping: 向网络主机发送 ICMP ECHO_REQUEST 包

    ping 命令会向指定的网络主机发送特殊网络数据报 IMCP ECHO_REQUEST.多数网络设备收到该数据包后会做出回应,通过此法即可验证网络连接是否正常. 有时从安全角度出发,通常会配置部分网络 ...

  8. 【高性能服务器】Nginx剖析

    引言 Nginx是一个流行的高性能服务器,官方宣称在压力测试下可以支持5万个并发连接,而且占用内存极低.相比于其他昂贵的硬件负载均衡解决方案,Nginx是开源免费的,可以大大降低成本.本文将从一下几个 ...

  9. 第一篇:groovy对DSL的语法支持

    引子 我们用一段gradle的脚本做引子,理解这一段脚本与一般的groovy代码是怎么联系起来的 buildscript { repositories { jcenter() mavenLocal() ...

  10. 实现iOS项目一款用swift实现的应用top源码

    Top 后台 Swift版本Ios 8 / iPhone 5S适配这边有个登陆,如果你们想测试的话,可以用这个账号, 账号:18868879362 密码:420562   源码下载: http://c ...