这是我的代码:
def parse(self, response):
selector = Selector(response)
sites = selector.xpath("//h3[@class='r']/a/@href")
for index, site in enumerate(sites):
url = result.group(1)
print url
yield Request(url = site.extract(),callback = self.parsedetail)
def parsedetail(self,response):
print response.url
...
obj = Store.objects.filter(id=store_obj.id,add__isnull=True)
if obj:
obj.update(add=add)
def parse
中的scarpy会从谷歌获取网址 网址输出如:
www.test.com
www.hahaha.com
www.apple.com
www.rest.com
但是当它屈服于def parsedetail
时
网址没有订单可能会变成:
www.rest.com
www.test.com
www.hahaha.com
www.apple.com
有什么方法可以让yield url和order发送到def parsedetail
?
因为我需要先抓取www.test.com
。(顶级网址在Google搜索中提供的数据更准确)
如果没有数据。
我会转到下一个网址,直到更新空字段。(www.hahaha.com
,www.apple.com
,www.rest.com
)
请指导我,谢谢!
答案 0 :(得分:1)
默认情况下,未定义Scrapy请求的计划和发送顺序。但是,您可以使用priority
keyword argument控制它:
priority(int) - 此请求的优先级(默认为0)。该 调度程序使用priority来定义用于处理的顺序 要求。具有更高优先级值的请求将更早执行。 允许负值以便相对指示 低优先级。
您还可以通过传递callstack
字典中的meta
来抓取同步,例如,请参阅this answer。