Python学习-scrapy3
此文接scrapy2来成功实践一个案例。
按官方Scrapy入门教程章节一步步来实现是没有问题,但是在操作过程中发现要想按自行想法设置来修改一些功能时候就发现遇到了如何调试和达成所要目的结果的问题,下面将总结下遇到的问题和解决办法。
一、按官方Scrapy入门教程实现说明
详细步骤可参考官方资料,下面列出实现过程中必须完成的文件和说明:
上文scrapy2已说明使用命令:scrapy startproject tutorial创建命名为tutorial的scrapy项目后的文件在实践中涉及下面两个文件改动后即可运行启动scrapy。
1、在tutorial/spiders/路径下面创建文件dmoz_spider.py,如下图:
创建一个Spider代码文件2、按教程编写完成tutorial/items.py文件,此处Item 是保存爬取到的数据的容器。
如上1和2操作完成后,可运行下面命令保存爬取到的数据,该命令将采用JSON格式对爬取的数据进行序列化,生成 items.json 文件。
scrapy crawl dmoz -o items.json
二、问题定位&解决办法
在使用教程代码的链接网址中,多增加了百度新闻网址,然后通过上面最后命令运行后发现文件是空的,根据运行情况仔细核出错地方,可参看下面图示:
红框中显示不同地址连接错误反馈发现教程中网址显示无法读出结果,直接浏览器网址返回也是403 Forbidden信息,说明此网址无法访问;
但是,百度新闻是可以访问的,通过查询“DEBUG: Forbidden by robots.txt”找到了原因,具体修改可参考:爬虫出现Forbidden by robots.txt,出现此问题主要是scrapy默认遵守robot协议。
robot.txt解释:搜索引擎通过一种程序“蜘蛛”(又称spider),自动访问互联网上的网页并获取网页信息。您可以在您的网站中创建一个纯文本文件robots.txt,在这个文件中声明该网站中不想被蜘蛛访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎访问和收录了,或者可以通过robots.txt指定使搜索引擎只收录指定的内容。搜索引擎爬行网站第一个访问的文件就是robot.txt。
通过按找到的解决办法修改后百度新闻内容就爬取下来了,可参考下图:
收集到的主页信息