Scrapy error : exceptions.AttributeError: 'HtmlResponse' object has no attribute 'urljoin'
我已经使用pip安装了scrapy,并尝试了scrapy文档中的示例。
我得到了错误
在研究了一个StachoverFlow问题之后我已经用修好了
1 2 3 | sudo pip uninstall scrapy sudo pip install scrapy==0.24.2 |
但现在我看到了EDOCX1[1]
这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import scrapy class StackOverflowSpider(scrapy.Spider): name = 'stackoverflow' start_urls = ['https://stackoverflow.com/questions?sort=votes'] 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, } |
有人能帮我吗?
在scrapy>=0.24.2,不但有
1 | full_url = urlparse.urljoin(response.url, href.extract()) |
不要忘了给它的进口
1 | import urlparse |
请注意,
- response.urljoin附加(辅助)
它实际上是和这里的是什么样的。
1 2 3 4 5 6 | from six.moves.urllib.parse import urljoin def urljoin(self, url): """Join this Response's url with a possible relative url to form an absolute interpretation of the latter.""" return urljoin(self.url, url) |
该代码示例使用的是你的scrapy 1.0。因为你downgraded至0.24,你需要使用
1 | full_url = urljoin(response.url, href.extract()) |
如果你点击"scrapy 0.24(旧的稳定)"按钮上面的例子的例子代码,你把你的scrapy版使用。