我试图通过mysql管道将我的蜘蛛抓取的物品放入mysql数据库中。一切正常,但我看到一些奇怪的行为。我看到数据库的填充与网站本身的顺序不一样。有一个随机的顺序。可能是字典,比如我猜的物品清单。
我的问题是:
网站上的项目:
在我的sql中添加顺序:
答案 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并进行广度搜索,然后我希望内容排列的方式不会改变