抽象逻辑问题,先抓取再抓取,然后将数据传递到一个项目中的另一个站点

时间:2019-02-01 06:54:49

标签: scrapy logic

新手刮scrap。 <72小时。有点困惑。

我有两个要剪贴的网站。 Site1,Site2。 成功刮取了站点1并提取了我希望使用的数据,并且仅在刮除site1之后才开始刮取site2。

一个简单的例子就像 从car.for.sale(SITE1)获取所有的CAR-MODEL-YR-PRICE 使用此数据在ebay.com(SITE2)上使用SITE1 CAR-MODEL-YR-PRICE进行比较

我的初始轨迹中正在发生什么。 我开始同时抓取两个网站(出现),但site2似乎没有site1数据,但未返回任何内容

我需要跑两个蜘蛛吗?

我看了草皮的文档,

def parse()
 ...scrape site1
 ...format the data
 yield (... , callback=parse2)

def parse2()
 ...with data from site1
 ...scrap site2

,但似乎没有任何效果。 (缺乏理解或误解了事情的运作方式)

任何人都可以发布一个很好的起点模板来说明如何通过数据剪贴簿站点2来为site1然后

2 个答案:

答案 0 :(得分:0)

您拥有meta键,可以在请求之间传递

def parse()
 ...scrape site1
 ...format the data
 some_data = {'hello': "man"}
 yield (... , callback=parse2, meta={'data': some_data })

def parse2()
 ...with data from site1
 some_data = response.meta['data']
 ...scrap site2

答案 1 :(得分:0)

直接但简单的管道是在同一项目中创建2个蜘蛛网(为此请检查命令genspider)。

已完成此操作,并成功实现了第一个蜘蛛,您需要存储数据。使用此或仅内置Python库的命令行即可按需存储数据(json,csv等)。

最后,使用Python读取Spider 2中的文件,现在您将数据存储在第二个Spider中,您可以用它做任何您想做的事。]

P.S。这是一种简单且幼稚的方法,但它确实有效!如果您想做一些更复杂的事情,例如在单个Python脚本中执行所有操作,则可以查看以下指向Scrapy最佳实践的链接:http://doc.scrapy.org/en/latest/topics/practices.html。但是作为一个初学者(<72小时),我不会太担心。

P.S.S。祝世界好运!但是不要使服务器过热;)!