我目前正在从Excel文档中抓取多个产品网站。
该文件看起来基本上是这样的:
ID URL1 URL2 URL3
01 abc.com/1 def.com/1 ghi.com/1
02 abc.com/2 def.com/2 ghi.com/2
03 abc.com/3 def.com/3 ghi.com/3
我的蜘蛛现在获取ID和URL,并且由于站点不同,会向相应的parse
- 函数发出请求,并将ID传递给每个函数。
现在的问题是我的csv-output多次列出每个ID,如下所示:
ID PriceURL1 PriceURL2 PriceURL3
01 xx.xx
01 xx.xx
01 xx.xx
02 xx.xx
02 xx.xx
...
有没有办法合并这些项目,以便每个ID都具有从所有不同parse
- 函数收集的价格?
到目前为止,我认为我的选择是:
parse_urlX
- 函数中产生一个请求,但我不知道这是否真的是一个优雅和资源 - 友好的方式,因为我每次都必须阅读文档中的网址。 我试过3.但直到现在,我无法弄清楚如何访问以前被抓取的项目并更新它们。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
在我看来,最好的方法是事后处理这些项目。项目管道不是为了保存项目和合并项目而设计的,您可以过滤掉但不能以优雅的方式合并它们。
汇总输出非常简单:
import json from collections import defaultdict groups = defaultdict(list) for line in open("items.jl"): item = json.loads(line) key = get_key(item) # a function that returns a key for an item groups[key].append(item) for items in groups.values(): merged = merge_items(items) # a function that returns a single item # store the merged item somewhere. ...
如果您的数据足够大且不适合记忆,我建议发布一个新问题,您将获得大量答案。