我尝试使用requests获取一个页面,然后将响应对象传递给解析器,但是遇到了一个问题:
requests
def start_requests(self): yield self.parse(requests.get(url)) def parse(self, response): #pass
builtins.AttributeError:“generator”对象没有属性“dont_filter”
ep6jt1vc1#
首先需要下载页面的响应,然后将该字符串转换为HtmlResponse对象
from scrapy.http import HtmlResponse resp = requests.get(url) response = HtmlResponse(url="", body=resp.text, encoding='utf-8')
fslejnso2#
你需要做的是1.获取带有python请求的页面,并将其保存到不同于Scrapy response的变量。r =请求.获取(url)1.用你的python请求文本替换scrappy响应正文。响应=响应.替换(正文= r.文本)现在你有了Scrapy响应对象,其中包含了所有来自python请求的数据。
moiiocjp3#
yields返回一个生成器,以便在请求获取数据之前对其进行迭代,您可以删除yield,它应该可以工作。
yields
def start_requests(self): self.parse(requests.get(url)) def parse(self, response): #pass
3条答案
按热度按时间ep6jt1vc1#
首先需要下载页面的响应,然后将该字符串转换为HtmlResponse对象
fslejnso2#
你需要做的是
1.获取带有python请求的页面,并将其保存到不同于Scrapy response的变量。
r =请求.获取(url)
1.用你的python请求文本替换scrappy响应正文。
响应=响应.替换(正文= r.文本)
现在你有了Scrapy响应对象,其中包含了所有来自python请求的数据。
moiiocjp3#
yields
返回一个生成器,以便在请求获取数据之前对其进行迭代,您可以删除yield,它应该可以工作。