我使用scrapy来刮取社交网络,然后在NEO4J数据库中获取数据。
我的挑战是将两个项目相互关联:
class person(scrapy.Item):
name=Field()
class AnotherPerson(scrapy.Item):
name=Field()
我想通过说:
将这两个项目保存在我的图表数据库中人与AnotherPerson()
有关系我需要的是在一个管道中发送两个项目!!我们应该怎么做 ? 我试图通过列表发送它,但是只要集合在那里,scrapy就不接受列表。
这是我的伪代码:
我得到一份人员名单(每个人都有个人资料和像facebook一样的朋友名单)
对于此列表中的每个人:
我有两条管道。它们可以很好地将数据保存在数据库中,但我没有任何关于如何将它们联系起来的线索,因为我需要在同一个过程中(即管道)执行此操作。
我不确定自己是否清楚,所以请不要犹豫要求澄清。
答案 0 :(得分:2)
如何将Person
项添加为AnotherPerson
的字段呢?请记住,您始终可以在请求上使用meta
参数在回调之间传递信息。
您可以执行以下操作:
parse_person(self, response):
...
yield Request(self, url=someurl, callback=parse_anotherperson,
meta={"some_key":"some_person_id"})
然后,您可以在Person
项目上添加对上一个AnotherPerson
的引用作为字段或其他内容。