【发布时间】:2013-05-20 04:22:55
【问题描述】:
我想抓取整个网站并有条件地提取链接。
按照此链接中的建议,我尝试了多个规则,但它不起作用。 Scrapy doesn't crawl all pages
我尝试使用此代码,但它没有删除任何细节。
class BusinesslistSpider(CrawlSpider):
name = 'businesslist'
allowed_domains = ['www.businesslist.ae']
start_urls = ['http://www.businesslist.ae/']
rules = (
Rule(SgmlLinkExtractor()),
Rule(SgmlLinkExtractor(allow=r'company/(\d)+/'), callback='parse_item'),
)
def parse_item(self, response):
self.log('Hi, this is an item page! %s' % response.url)
hxs = HtmlXPathSelector(response)
i = BusinesslistItem()
company = hxs.select('//div[@class="text companyname"]/strong/text()').extract()[0]
address = hxs.select('//div[@class="text location"]/text()').extract()[0]
location = hxs.select('//div[@class="text location"]/a/text()').extract()[0]
i['url'] = response.url
i['company'] = company
i['address'] = address
i['location'] = location
return i
在我的情况下,它不应用第二条规则,因此它不解析详细信息页面。
【问题讨论】:
-
您的第一条规则为空。你怎么知道第二个有效?
-
因为第一条规则是空的,它应该爬取整个站点并且它应该提取与第二条规则匹配的链接。根据参考文献。 stackoverflow.com/questions/15147057/…
标签: scrapy