python抓取链家房源信息(二)

试着用scrapy将之前写的抓取链家网信息的重新写了写

然后先是用了第一页的网页作为测试,调试代码,然后发现总是抓取的时候遇见了

类似于这样的问题,并且抓取不到信息

2017-03-28 17:52:49 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://weibo.com/robots.txt> (referer: None)
2017-03-28 17:52:49 [scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt: <GET https://bj.lianjia.com/ershoufang/pg1/>
2017-03-28 17:52:49 [scrapy.core.engine] INFO: Closing spider (finished)
之前一直以为是因为没有加user-agent和header信息导致的,但是加上之后还是会出现这种情况,所以百度了下
解决办法是 在 setting.py 中:
''# Obey robots.txt rules
ROBOTSTXT_OBEY = True  //设置为 False 即可
就能抓出来了,问题是因为 scrapy 默认检测 robots.txt ,看是否可以抓取,如果不行,就不能用了哦!

然后百度了robot.txt,说是在设置爬虫的时候,在请求url之前,spider会向服务器请求一个robot.txt的文件,然后该文件包含了本站点允许爬虫爬取的范围(比如服务器不与许爬取的页面,可以通过robot协议设置)因为scrapy是遵守robot协议的,所以会先请求这个文件查看自己的权限。所以在setting.py中将ROBOTSTXT_OBEY设置为False就可以解决了

然后在将数据插入到mongodb中时,没有插入数据,是忘记在setting.py中激活项目管道组件了。

ITEM_PIPELINES = {
'House.pipelines.HousePipeline': 300,
}

代码就不贴了,挺简单的,都是设置的问题。

原文地址:https://www.cnblogs.com/chenyang920/p/7893311.html