现在我有一个爬虫,parse 到了一个页面的相关数据,但是,这个页面的有些数据需要结合 parse 中的另一个 request 的结果才能确定是否有用,类似下面的代码:
def parse(self, response):
...........
yield scrapy.Request(xxxxx, callbask=func)问题就在于 我怎么拿到这个 request 的返回值!!!!
.......
1
nicevar 2018-11-16 22:26:11 +08:00
你不会连回调的意思都不懂吧,你那个单词都写错了不是 callbask,是 callback,在这个函数里等着就行了
|
2
xzc19970719 2018-11-16 22:52:55 +08:00 via Android
callback 你用来干啥了????
|
3
Trim21 2018-11-16 22:58:31 +08:00 via Android
callback 的 response 参数就是这个请求的响应
你应该在 callback 参数对应的 func 里面处理这个请求对应的后续工作 |
4
lzhd24 2018-11-16 22:58:50 +08:00
```
def parse(self, response): urls = ["https://www.test.com/page/{}/".format(i) for i in range(1,250)] for url in urls: yield Request(url,callback=self.parse2) def parse2(self,response): article_urls = response.xpath("//div[@class='col-sm-12 col-lg-7 col-md-7']//div//a//@href").extract() for url in article_urls: yield Request(url,callback=self.parse3) def parse3(self,response): items = XiazaiItem() items['title']=response.xpath("//article//div//h1[@class='h2']/text()").extract() items['content']=response.xpath("//div[@class='article__body']//p/text()").extract() yield items ``` |
5
chengxiao 2018-11-17 01:06:46 +08:00
这种情况我一般就不用 yield 了
import requests 直接用 requests 走起 |
6
moxiaowei OP @nicevar 再这个 callback,处理了,然后上面那个 parse 怎么拿到 callback 处理的结果?
|