【问题标题】:Scraping an API抓取 API
【发布时间】:2019-08-09 18:46:48
【问题描述】:

大家早上好,

我尝试在这个网站上收集有关汽车的数据:https://www.caramigo.eu/

为此,我需要在主页的搜索栏上针对指定的位置和日期发起请求。这为我提供了一个这样的页面:https://www.caramigo.eu/be/fr/recherche?address=Belgique%2C+Wallonie%2C+Li%C3%A8ge%2C+4000%2C+Li%C3%A8ge&date_debut=22-03-2019&date_fin=23-03-2019

然后,借助我的 Web 浏览器的开发工具,我可以恢复 JSON 文件中的数据并将其抓取。问题是,每次我发起对新位置的请求时,JSON 文件都会发生变化,并且位于同一 URL (https://www.caramigo.eu/services/car)。

有没有人知道如何创建一个蜘蛛来启动请求、获取 JSON 文件并抓取它?或者我可以如何直接更改 API 上的数据以获取其他位置?

提前致谢!

【问题讨论】:

  • 您的意见是什么?您是否有要抓取数据的特定位置,还是要获取所有数据?
  • 嗯,我想要关于汽车特性、租金价格的数据,......我想搜索一下我国所有的城市中心,大约有 500 个官方城市。

标签: python json database scrapy web-crawler


【解决方案1】:

Scrapy 过滤对已访问 URL 的请求,以避免循环。由于您需要的资源始终使用相同的 URL,因此 Scrapy 会对其进行过滤。

但您可以通过在请求中使用 dont_filter=True 来禁用它。例如:

yield scrapy.Request(
   url='https://www.caramigo.eu/services/car',
   dont_filter=True,
   callback=self.parse_item
)

【讨论】:

  • 谢谢!我仍然有一个问题,但它可能不在这个问题的范围内。由于我的数据存储在同一个地址,我如何使用 Scrapy 发送请求更改页面?我的意思是,如果我开始搜索纽约,caramigo.eu/services/car 将显示有关纽约汽车的信息,并且每个城市的信息都会有所不同。我怎么能用 Scrapy 做到这一点?提前致谢!
  • 身份证。你必须弄清楚网站是如何工作的。如果它存储在服务器中(也称为有状态),您将必须请求每个城市的搜索页面并使用cookiejar 来管理会话。
猜你喜欢
  • 1970-01-01
  • 2022-11-06
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 2015-03-18
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多