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 ...
随机推荐
- 【bzoj4804】欧拉心算 解题报告
[bzoj4804]欧拉心算 Description 给出一个数字\(N\),计算 \[\sum_{i=1}^n\sum_{j=1}^n \varphi(\gcd(i,j))\] Input 第一行为 ...
- 遇到问题----linux-----linux 打开文件数 too many open files 解决方法
在运行某些命令或者 tomcat等服务器持续运行 一段时间后可能遇到 too many open files. 出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值. 查看每个用 ...
- linux Git版本控制学习与Git服务器搭建
来源地址 要随时掌握工作区的状态,使用git status命令. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容. 初始化一个Git仓库,使用git init命令. ...
- composer安装第三方库出现需要认证信息等原因
最近,在学习使用thinkcmf的时候,使用composer安装第三方类库,遇到了需要输入验证码的问题,援引https://laravel-china.org/topics/17893该链接中的讨论, ...
- 队列,event,multiprocess
队列:queue queue is especially useful in threaded programming when information must be exchanged safel ...
- GO_08:GO语言基础之interface
接口interface 1. 接口是一个或多个方法签名的集合 2. 只要某个类型拥有该接口的所有方法签名,即算实现该接口,无需显示声明实现了哪个接口,这称为 Structural typing 3. ...
- java基础-数组的折半查找原理
java基础-数组的折半查找原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让你写一个数组的查找功能,需求如下:在一个数组中,找一个元素,是否存在于数组中, 如果存在就返回 ...
- 转:实现OC与JS的简易交互
oc-->js stringByEvaluatingJavaScriptFromString,其参数是一NSString 字符串内容是js代码(这又可以是一个js函数.一句js代码或他们的组合) ...
- python---django的模块简便使用
一:登录操作 from django.contrib.auth import authenticate,login,logout #可以用来做登录验证 from django.contrib.auth ...
- Ubuntu如何同步网络时间
解决方法: 1.安装ntpdate工具 apt-get install ntpdate 2.将系统时间与网络同步 ntpdate cn.pool.ntp.org 3.将时间写入硬件 hwclock - ...