【问题标题】:Scrapy crawl in orderScrapy按顺序爬行
【发布时间】:2014-09-23 07:06:35
【问题描述】:

我不知道如何按顺序制作抓取链接 我有一个包含文章的页面,每个页面都有一个标题,但文章与标题不匹配 我还在 settings.py 中添加了:

DEPTH_PRIORITY = 1
SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.FifoMemoryQueue'

我有这样的东西:

class Getgot(Spider):
    name = "getem"
    allowed_domains = ["somesite.us"]
    start_urls = ["file:local.html"]
    el = '//div[@article]'


    def parse(self,response):
        hxs = HtmlXPathSelector(response)
        s = hxs.select('//article')
        filename = ("links.txt")
        filly = open(filename, "w")
        for i in s:
            t = i.select('a/@href').extract()
            filly.write(str(t[0])+'\n') 
            yield Request(str(t[0]),callback=self.parse_page)


    def parse_page(self,res):
        hxs = HtmlXPathSelector(res)
        s = hxs.select('//iframe').extract()
        if s:
            filename = ("frames.txt")
            filly = open(filename, "a")
            filly.write(str(s[0])+'\n') 
    else:
        filename = ("/frames.txt")
        filly = open(filename, "a")
        filly.write('[]\n') 

【问题讨论】:

标签: python scrapy


【解决方案1】:

我不确定我是否理解您的问题和您的代码之间的关系。标题在哪里?

一些提示:1) 使用最新版本更新您的 scrapy 语法 2) 不要从蜘蛛写入任何文件,将其写入管道或导出提要。 3) 如果您需要将数据从一个函数传输到下一个函数,请使用元属性。

def parse(self, response):
    for link in response.xpath("//article/a/@href").extract():
        yield Request(link, callback=self.parse_page, meta={'link':link})

def parse_page(self, response):
    for frame in response.xpath("//iframe").extract():
        item = MyItem()
        item['link'] = response.meta['link']
        item['frame'] = frame
        yield item

然后将其导出为 csv 或 json 或其他格式,以将链接和框架存储在一起。

【讨论】:

  • 标题存储在 iframe 中,但我会尝试更新我的语法并使用元属性
  • "如果您需要将数据从一个函数传输到下一个函数,请使用元属性。"我认为这就是开线器所需要的。在我看来,他正试图用一个文件将信息从parse 推送到parse_page,这会出错,因为scrapy 并行工作。您可能想要添加一个指向官方文档的链接,甚至称为 "passing additional data to callback functions"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 2015-10-18
  • 2014-12-31
相关资源
最近更新 更多