PythonCrawl自学日志(3)

时间:2023-01-18 07:44:17

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自学日志&lowbar;2017&sol;9&sol;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&lpar;22&rpar;:HBase协处理器

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

随机推荐

  1. Markdown简单语法

    Content 标题大小 斜体和加粗 分割线 有序列表和无序列表 链接 代码框 标题大小 在字体下方加上-和=分别表示一级标题和二级标题,例如: 一级标题 --- 二级标题 === 或者使用#的个数表 ...

  2. 从LIS问题浅谈动态规划

    今天以LIS问题切入动态规划,现在做一些简单的总结. LIS问题: http://www.cnblogs.com/Booble/archive/2010/11/27/1889482.html

  3. 2016-08-05&lpar;1&rpar; ng-options的用法详解

    http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/ng-options-usage/

  4. Xamarin提示Build-tools版本过老

    Xamarin提示Build-tools版本过老 错误信息:G:\XamarinDemo\Xamarin.Forms-master\packages\Xamarin.Android.Support.V ...

  5. Android(java)学习笔记120:Android中的Application类用法

    1.简介 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型:而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是 ...

  6. MyEclips:Struts 2 &plus; Hibernate 4 &plus; SQL Server2008

    步骤一:准备 1.下载 sqlJDBC.jar的下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=21599 Hibernate ...

  7. 第三篇:python基础之编码问题

    python基础之编码问题   python基础之编码问题 本节内容 字符串编码问题由来 字符串编码解决方案 1.字符串编码问题由来 由于字符串编码是从ascii--->unicode---&g ...

  8. (2015年郑州轻工业学院ACM校赛题) C 数列

    在我们做完B题之后就去看C题了, 发现很多人都已经做出来了, 并且一血还是我们学弟拿的, 感觉这题不难, 我们举了几个例子之后发现全是Alice 然后我们就决定意淫一下,试试看! 没想到就A了 - . ...

  9. Codeforces Round &num;375 &lpar;Div&period; 2&rpar;A&period; The New Year&colon; Mee

    A. The New Year: Meeting Friends time limit per test 1 second memory limit per test 256 megabytes in ...

  10. ul&plus;jquery自定义下拉选择框

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...