相关疑难解决方法(0)

我如何在scrapy python中使用多个请求并在它们之间传递项目

我有item对象,我需要将它传递到许多页面以将数据存储在单个项目中

喜欢我的项目

class DmozItem(Item):
    title = Field()
    description1 = Field()
    description2 = Field()
    description3 = Field()
Run Code Online (Sandbox Code Playgroud)

现在这三个描述分为三个单独的页面.我想做些喜欢的事

现在这很适合 parseDescription1

def page_parser(self, response):
    sites = hxs.select('//div[@class="row"]')
    items = []
    request =  Request("http://www.example.com/lin1.cpp",  callback =self.parseDescription1)
    request.meta['item'] = item
    return request 

def parseDescription1(self,response):
    item = response.meta['item']
    item['desc1'] = "test"
    return item
Run Code Online (Sandbox Code Playgroud)

但我想要类似的东西

def page_parser(self, response):
    sites = hxs.select('//div[@class="row"]')
    items = []
    request =  Request("http://www.example.com/lin1.cpp",  callback =self.parseDescription1)
    request.meta['item'] = item

    request =  Request("http://www.example.com/lin1.cpp",  callback =self.parseDescription2)
    request.meta['item'] = item

    request =  Request("http://www.example.com/lin1.cpp",  callback …
Run Code Online (Sandbox Code Playgroud)

python scrapy

42
推荐指数
3
解决办法
3万
查看次数

如何将目标页面的结果合并到scrapy中的当前页面?

需要scrapy如何从一个页面获取链接然后按照此链接,从链接页面获取更多信息,并与第一页的一些数据合并...

谢谢

python scrapy web-scraping

17
推荐指数
3
解决办法
8520
查看次数

scrapy可以产生请求和项目吗?

当我编写parse()函数时,我可以为一个页面同时生成请求和项目吗?

我想在页面A中提取一些数据,然后将数据存储在数据库中,并提取要遵循的链接(这可以通过CrawlSpider中的规则来完成).

我称A页面的链接页面是B页面,所以我可以编写另一个parse_item()来从B页面中提取数据,但是我想在B页面中提取一些链接,所以我只能使用规则来提取链接?如何解决Scrapy中的重复URL?

python scrapy

11
推荐指数
2
解决办法
2万
查看次数

Scrapy:如何构建一个从多个 URL 收集信息的项目?

经过多年不情愿地将抓取工具编码为正则表达式和 BeautifulSoup 等的大杂烩之后,我发现了Scrapy,我几乎把它当作今年给自己的圣诞礼物!它使用起来很自然,而且似乎是为了让几乎所有东西都变得优雅和可重复使用而构建的。

但我处于一种不知道如何处理的情况:我的蜘蛛爬行并抓取列表页面 A,从中生成一组项目。但对于每个项目,我需要获取一个不同的补充链接(由一些抓取的信息构建,但不是 Scrapy 可以跟踪的页面上的明确链接)以获取附加信息。

我的问题分为两部分:在爬网过程之外获取 URL 的协议是什么?如何以优雅的方式从多个来源构建项目?

在 StackOverflow 上的上一个问题中已经部分地提出(并回答)了这个问题。但我更感兴趣的是 Scrapy 的哲学在这个用例中应该是什么——肯定不是不可预见的可能性?我想知道这是否是管道注定要使用的事情之一(添加从主要信息推导出来的辅助来源的信息是一个“后处理”实例),但是最好的方法是什么?不是彻底搞乱了Scrapy高效的异步组织吗?

python pipeline scrapy web-scraping

5
推荐指数
1
解决办法
1802
查看次数

scrapy如何将蜘蛛返回给另一只蜘蛛的价值

我正在抓取的网站包含许多玩家,当我点击任何玩家时,我可以进入他的页面.

网站结构如下:

<main page>
<link to player 1>
<link to player 2>
<link to player 3>
..
..
..
<link to payer n>
</main page>
Run Code Online (Sandbox Code Playgroud)

当我点击任何链接时,我会转到播放器的页面,如下所示:

<player name>
<player team>
<player age>
<player salary>
<player date>
Run Code Online (Sandbox Code Playgroud)

我想废弃年龄在20到25岁之间的所有球员.

我在做什么

  1. 使用第一个蜘蛛刮取主页面.

  2. 使用第一个蜘蛛获取链接.

  3. 使用第二个蜘蛛抓取每个链接.

  4. 使用第二个蜘蛛获取玩家信息.

  5. 使用管道将此信息保存在json文件.

我的问题

我怎样才能将date值返回second spiderfirst spider

我试过的

我建立自己的middelware,我覆盖了process_spider_output.它允许我打印请求但我不知道我还应该做什么才能将该date值返回给我的第一个蜘蛛

任何帮助表示赞赏

编辑

以下是一些代码:

def parse(self, response):
        sel = Selector(response)
        Container = sel.css('div[MyDiv]')
        for player in …
Run Code Online (Sandbox Code Playgroud)

python scrapy python-2.7

5
推荐指数
1
解决办法
2641
查看次数

让一只蜘蛛使用另一只蜘蛛返回的物品?

所以我编写了一个蜘蛛,它从网页中提取某些所需的链接,并将URL,链接文本和其他信息(不一定包含在<a>标记本身中)放入每个链接的项目中.

我应该如何将此项目传递给另一个抓取该项目中提供的URL的蜘蛛?

scrapy

1
推荐指数
1
解决办法
1398
查看次数

标签 统计

scrapy ×6

python ×5

web-scraping ×2

pipeline ×1

python-2.7 ×1