Scrapy逆转了物品,以便在db中进行准备

时间:2013-06-20 12:20:19

标签: python scrapy

我试图通过mysql管道将我的蜘蛛抓取的物品放入mysql数据库中。一切正常,但我看到一些奇怪的行为。我看到数据库的填充与网站本身的顺序不一样。有一个随机的顺序。可能是字典,比如我猜的物品清单。

我的问题是:

  1. 我如何获得与网站本身相同的订单。
  2. 我怎样才能改变问题1的这个顺序。
  3. 网站上的项目:

    • A
    • C
    • d
    • 电子

    在我的sql中添加顺序:

    • 电子
    • d
    • C
    • A

3 个答案:

答案 0 :(得分:1)

没有实际的代码很难说,但理论上......

Scrapy是完全异步的,您无法知道将通过管道解析和处理的项目的顺序。

但是,您可以通过使用priority键“标记”每个项目来控制行为。在您的priority课程中添加一个字段Item,在您的蜘蛛网parse_item方法中根据网页上的位置设置priority,然后在您的管道中,您可以将此priority字段写入数据库(以便以后能够排序),或者收集类范围列表中的所有项目,并在close_spider方法中对列表进行排序并批量插入进入数据库。

希望有所帮助。

答案 1 :(得分:0)

如果您没有强加它,数据库中的项目没有特殊订单。所以你应该在数据库中为你的表添加一个时间戳,让它保持最新(mysql有一个特殊的标志来将字段标记为auto-now)并在你的查询中使用ORDER BY。

答案 2 :(得分:0)

首先,这是一个很好的问题。根据我的理解,Scrapy进行了深度搜索 more on depth search avaible here。因此,当您抓取一个网站时,它会进行深度搜索,然后自动更改您在网站上看到的内容的顺序,然后您就会进行搜索。我更喜欢你使用scrapy并进行广度搜索,然后我希望内容排列的方式不会改变