试着用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,
}
代码就不贴了,挺简单的,都是设置的问题。