【发布时间】:2015-11-15 00:07:33
【问题描述】:
我现在正在尝试scrapy。我尝试了http://doc.scrapy.org/en/1.0/intro/overview.html 页面中的示例代码。我尝试使用标签“大数据”提取最近的问题。一切运作良好。但是当我尝试提取带有“bigdata”和“python”标签的问题时,结果不正确,结果中只有“bigdata”标签。但是在浏览器上,我对这两个标签都提出了正确的问题。请在下面找到代码:
import scrapy
class StackOverflowSpider(scrapy.Spider):
name = 'stackoverflow'
start_urls = ['https://stackoverflow.com/questions/tagged/bigdata?page=1&sort=newest&pagesize=50']
def parse(self, response):
for href in response.css('.question-summary h3 a::attr(href)'):
full_url = response.urljoin(href.extract())
yield scrapy.Request(full_url, callback=self.parse_question)
def parse_question(self, response):
yield {
'title': response.css('h1 a::text').extract()[0],
'votes': response.css('.question .vote-count-post::text').extract()[0],
'body': response.css('.question .post-text').extract()[0],
'tags': response.css('.question .post-tag::text').extract(),
'link': response.url,
}
当我将 start_urls 更改为
start_urls = ['https://stackoverflow.com/questions/tagged/bigdata+python?page=1&sort=newest&pagesize=50']
结果包含只有“大数据”标签的问题。如何只用两个标签来提问?
编辑:我认为正在发生的事情是,scrapy 正在从我提供的主页进入带有标签“bigdata”的页面,因为这些标签是指向该标签主页的链接。如何编辑此代码以使 scrapy 不进入标签页面而只进入该页面中的问题?我尝试使用如下规则,但结果仍然不正确。
rules = (Rule(LinkExtractor(restrict_css='.question-summary h3 a::attr(href)'), callback='parse_question'),)
【问题讨论】:
标签: python web-scraping web-crawler scrapy