我有纽约市学校的学校 ID 列表。我想收集每所学校的公开预算数据。预算数据可从以下网站获取:
https://www.nycenet.edu/offices/d_chanc_oper/budget/dbor/galaxy/galaxybudgetsummaryto/default.aspx
我使用 Python 来完成这项任务,并且对于浏览器自动化,我知道 scrapy 比 selenium 快得多。但问题是,我需要与页面交互。也就是说,我必须输入学校 ID 以及感兴趣的年份(最终我想收集每年的预算数据)。这种交互(据我所知)然后调用 Javascript 来获取新数据。
我希望有某种方法可以解决这个问题,这样我就可以使用 scrapy 而不是 selenium,因为 selenium 很慢。我取得的一些进展是我发现了以下类型的 URL(遗憾的是我不记得是如何发现的):
可以直接将您带到学校的数据(我认为无需与表单或Javascript交互)。不幸的是,我只能让这个方法在 2019 年发挥作用。
有人能找到一种方法来构造 URL 以便能够指定年份吗?或者也许有人可以让我知道这是否不可能?
最佳答案
如果您检查浏览器开发工具的网络选项卡,您会发现它都是关于非常标准的发布请求。您可以使用 Scrapy's FormRequest 重现它.
yield scrapy.FormRequest.from_response(
response,
formid='form1',
formdata={'School_Code': 'm015', 'Fiscal_Year': '2019'},
callback=self.parse_school # for instance
)
关于javascript - 想要使用 Scrapy 抓取网站,但不确定是否有绕过 javascript 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55911584/