属性错误:'Response'对象没有属性'css'

时间:2017-08-22 04:41:02

标签: python scrapy

当我尝试这个时,我得到一个Attribute Error : 'Response' object has no attribute 'css'

我尝试使用此代码:

response.css('h1.ctn-article-title::text').extract()

任何人都可以帮忙吗?

我正在尝试从以下代码获取文本“更新初级护理”,标题为:

          更新初级保健           CME

        

我正在放置我的整个代码:

response = requests.get(url, headers = headers)
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'requests' is not defined
import requests
response = requests.get(url, headers = headers)
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'url' is not defined
url = 'somethingurl'
response = requests.get(url, headers = headers)
response.css('h1.ctn-article-title::text').extract()
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'Response' object has no attribute 'css'
response.css('h1').extract()
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'Response' object has no attribute 'css'
response.css('h1.ctn-article-title::text').extract()

3 个答案:

答案 0 :(得分:3)

正如Tarun在评论中指出的那样:您正在混合scrapyrequests代码。

如果您想根据请求响应创建scrapy响应,可以尝试:

from scrapy.http import TextResponse
import requests

url = 'http://stackoverflow.com'
resp = requests.get(url)
resp = TextResponse(body=resp.content, url=url)
resp.xpath('//div')
# works!

请参阅requests.Responsescrapy.http.TextResponse个对象的文档。

答案 1 :(得分:0)

在您的代码中添加此行,它将正常工作 从任何其他包中删除任何导入请求。

from  scrapy.http import Request

答案 2 :(得分:-1)

在这种情况下,发生错误的行要求CSSResponse对象不是正常响应。尝试创建一个CSSResponse而不是正常的Response来解决错误。

You can get it here

更具体地说,使用HtmlResponse是因为您的响应是HTML而不是纯文本。 HtmlResponse是CSSResponse的子类,因此它继承了缺少的方法。