Scrapy的【SitemapSpider】的【官网示例】没有name属性
Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0,
上午看了Scrapy的Spiders官文,并按照其中的SitemapSpider的示例练习,发现官文的示例存在问题——SitemapSpider下的Spider类没有name属性。

这导致孤编写的测试程序也没有name属性,结果,执行失败:No spider found in file


第一次执行使用的是runspider命令,失败;
第二次使用的是crawl命令——提前将爬虫文件放到某个Scrapy项目的spiders目录下,失败;
后来想起官文开始对于name属性的介绍:必须有的!
This is the most important spider attribute and it’s required.
那么,在爬虫程序中添加name属性,然后再用runspider命令执行,成功,得到了想要的信息。

关于Sitemaps的信息请参考:
What are Sitemaps? 和 Sitemap protocol
注意,并非每一个网站都有Sitemaps文件,当网站不存在Sitemaps文件时,无法用SitemapSpider抓取信息——主要抓取的是网站的链接(大型网站会有很多)。当然,按照官文的介绍,使用网站的robots.txt文件也可以(还需测试)。
孤的爬虫在测试网站发现了579个网页是使用Ctrl+C终止了爬虫的运行,否则,还会有更多:

SitemapSpider有什么用呢?
抓取了网站所有【允许爬虫抓取的(Sitemap协议、robots协议)】链接,然后,再抓取各个链接中的内容。
关于robots协议:Robots exclusion standard 和 robots协议
下面是一些网站的sitemap.xml或robots.txt截图:
发现很多网站时有robots.txt的,而没有sitemap.xml(或者我路径不对?),是因为robots协议是更先进的版本吗?

-微博几乎禁止了所有的 爬虫程序 去爬取其数据:





后记
SitemapSpider爬取了网站的链接后,是否可以交给其它爬虫程序处理?
在使用scrapy genspider创建爬虫程序时,没有名为sitemap*的模板:

Scrapy的【SitemapSpider】的【官网示例】没有name属性的更多相关文章
- FineUI(开源版)v4.2.2发布(8年125个版本,官网示例突破300个)!
开源版是 FineUI 的基石,从 2008 年至今已经持续发布了 120 多个版本,拥有会员 15,000 多位,捐赠会员达到 1,200 多位. FineUI(开源版)v4.2.2 是 8 年 ...
- [踩过的坑]Elasticsearch.Net 官网示例的坑
经过昨天的ElasticSearch 安装,服务以及可以启动了,接下来就可以开发了,找到了官网提供的API以及示例,Es 官方提供的.net 客户端有两个版本一个低级版本: [Elasticsearc ...
- docker swarm(当前官网示例)
介绍 Docker Swarm 是 Docker 公司推出的官方容器集群平台,基于 Go 语言实现 作为容器集群管理器,Swarm 最大的优势之一就是 100% 支持标准的 Docker API.各种 ...
- Leaflet_创建地图(官网示例,可以直接运行)(2017-10-20)
官网:http://leafletjs.com/examples.html 快速启动指南 http://leafletjs.com/examples/quick-start/example.html ...
- MySQL官网示例数据库emploees分析使用
1.下载与安装 下载地址:https://github.com/datacharmer/test_db 安装博客:https://blog.csdn.net/appleyuchi/article/de ...
- Knockout.Js官网学习(监控属性Observables)
前言 1.创建一个ViewModel <script type="text/javascript"> //1.创建一个ViewModel var myViewModel ...
- Scrapy官网程序执行示例
Windows 10家庭中文版本,Python 3.6.4,Scrapy 1.5.0, Scrapy已经安装很久了,前面也看了不少Scrapy的资料,自己尝试使其抓取微博的数据时,居然连登录页面(首页 ...
- Vue官网todoMVC示例
这个示例是模仿官网示例样式和功能用我自己的方式写的,基本上没有看官网的源码,只参考自定义指令.让我们一步步来探讨一下.官网demo 要实现的功能 单条添加todo 单条删除todo 双击编辑todo ...
- Knockout.Js官网学习(系列)
1.Knockout.Js官网学习(简介) 2.Knockout.Js官网学习(监控属性Observables) Knockout.Js官网学习(数组observable) 3.Knockout.Js ...
随机推荐
- Ecshop 2.x_3.x SQL注入和代码执行漏洞复现和分析
0x00 前言 问题发生在user.php的的显示函数,模版变量可控,导致注入,配合注入可达到远程代码执行 0x01 漏洞分析 1.SQL注入 先看user.php的$ back_act变量来源于HT ...
- 安装配置openstack-dashboard(horizon)
这里把dashboard安装在controller节点上. 1.安装程序包 # yum install -y openstack-dashboard 2.修改配置文件 # vim /etc/opens ...
- MySQL总结小妙招
mysql5.7版本,免登陆修改管理员密码: vim /etc/my.cnf 加入skip-grant-tables,重启MySQL 终端输入 mysql ,直接登录MySQL数据库,然后use my ...
- bug -- android 7.0 popwindow显示位置异常情况解决
android 7.0 popwindow显示位置异常,在android7.1官方进行解决了,但是还是要多7.0的bug进行解决,我的解决方案里面通过重写popwindow进行适配: import a ...
- centos7添加虚拟IP
1.在网络配置文件中添加虚拟IP,vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 TYPE="Ethernet" BOOTP ...
- merger_by_one 处理二维数组,根据里面某字段合并, 里面有的保留,有的求和~~
public function tt(){ $param = array( array ( 'hykno' => '2222222-CB', 'tcdk_fid' => '458B6D70 ...
- python基础之模块之序列化
---什么是序列化(picking)? 我们把变量从内存中变成可存储或传输的过程称之为序列化. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的 ...
- ReactiveCocoa内存管理
1.我们创建的管道是如何被保存的么? ReactiveCocoa设计的目的之一是允许这样一种编程样式,即管道可以匿名创建.到目前为止,我们的管道都是这么处理的.为了支持这种模式,ReactiveCoc ...
- String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别
本章主要介绍String和CharSequence的区别,以及它们的API详细使用方法. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/string01. ...
- bzoj千题计划148:bzoj1537: [POI2005]Aut- The Bus
http://www.lydsy.com/JudgeOnline/problem.php?id=1537 朴素的转移:dp[i][j]=max(dp[i][j-1],dp[i-1][j])+p[i][ ...