我正在使用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()