scrapy爬虫不能循环运行?

scrapy只能爬取一个页面上的链接,不能持续运行爬完全站,以下是代码,初学求指导。

class DbbookSpider(scrapy.Spider):
    name = "imufe"
    allowed_domains = ['http://www.imufe.edu.cn/']
    start_urls=('http://www.imufe.edu.cn/main/dtxw/201704/t20170414_127035.html')
    def parse(self, response):
        item = DoubanbookItem()
        selector = scrapy.Selector(response)
        print(selector)
        books = selector.xpath('//a/@href').extract()
        link=[]
        for each in books:
            each=urljoin(response.url,each)
            link.append(each)
        for each in link:  
            item['link'] = each
            yield item
        i = random.randint(0,len(link)-1)
        nextPage = link[i]
        yield scrapy.http.Request(nextPage,callback=self.parse)
阅读 7.1k
6 个回答

感谢大家的回答,16日发的问题,10天后回答多了起来,经过反复查找,我的代码allowed_domains = ['http://www.imufe.edu.cn/']这句出现错误,allowed_domains中的网站地址必须去掉'http://'后爬虫方可以正常运行,再次感谢各位回答者!

是不是爬得太快让封了

你这个入口地址有错了!不应该是一个内容页的入口,而是一个列表或者分类页的入口

nextPage = link[i] 检查一下这里的问题, 没猜错的话, link是一个url列表, 确保页面的提取规则是相同的。

随机的数字有可能会有重复的,进而产生了爬取相同页面的url,相同的url是不会重复爬取的

新手上路,请多包涵

start_urls还是应该注意一下,默认生成的爬虫应该是一个列表吧?
('..')会被解释为字符串而不是元组,所以只有单个元素的元组应该写成('..',),或者直接用列表['..']

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题