如何通过命令生成url让scrapy爬行

时间:2015-02-04 00:26:41

标签: python web-scraping scrapy

这是我的代码:

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.comwww.apple.comwww.rest.com
请指导我,谢谢!

1 个答案:

答案 0 :(得分:1)

默认情况下,未定义Scrapy请求的计划和发送顺序。但是,您可以使用priority keyword argument控制它:

  

priority(int) - 此请求的优先级(默认为0)。该   调度程序使用priority来定义用于处理的顺序   要求。具有更高优先级值的请求将更早执行。   允许负值以便相对指示   低优先级。


您还可以通过传递callstack字典中的meta来抓取同步,例如,请参阅this answer