在CrawlSpider中使用多个start_urls

时间:2014-11-01 04:55:44

标签: python scrapy

我正在使用CrawlSpider抓取网站。 我有多个启动网址,并且在每个网址中都有一个"下一个链接"链接到另一个类似的页面。 我使用规则来处理下一页。

rules = (
          Rule(SgmlLinkExtractor(allow = ('/',),
             restrict_xpaths=('//span[@class="next"]')),
             callback='parse_item',
             follow=True),
         )

当start_urls中只有一个url时,一切正常。 但是,当start_urls中有很多网址时,我得到了#34;忽略响应< 404 a url> :不处理或不允许HTTP状态代码"。

在处理完所有"下一个链接"后,如何从start_urls中的第一个网址开始,然后从start_urls中的第二个网址开始?

这是我的代码

class DoubanSpider(CrawlSpider):
    name = "doubanBook"
    allowed_domains = ["book.douban.com"]
    category = codecs.open("category.txt","r",encoding="utf-8")

    start_urls = []
    for line in category:
        line = line.strip().rstrip()
        start_urls.append(line)

     rules = (
             Rule(SgmlLinkExtractor(allow = ('/',),
                 restrict_xpaths=('//span[@class="next"]')),
                 callback='parse_item',
                 follow=True),
              )


     def parse_item(self, response):
         sel = Selector(response)
         out = open("alllink.txt","a")
         sites = sel.xpath('//ul/li/div[@class="info"]/h2')
         for site in sites:
             href = site.xpath('a/@href').extract()[0]
             title = site.xpath('a/@title').extract()[0]
             out.write("***")
         out.close()

0 个答案:

没有答案