javascript - 想要使用 Scrapy 抓取网站,但不确定是否有绕过 javascript 的方法

标签 javascript python selenium scrapy http-headers

我有纽约市学校的学校 ID 列表。我想收集每所学校的公开预算数据。预算数据可从以下网站获取:

https://www.nycenet.edu/offices/d_chanc_oper/budget/dbor/galaxy/galaxybudgetsummaryto/default.aspx

我使用 Python 来完成这项任务,并且对于浏览器自动化,我知道 scrapy 比 selenium 快得多。但问题是,我需要与页面交互。也就是说,我必须输入学校 ID 以及感兴趣的年份(最终我想收集每年的预算数据)。这种交互(据我所知)然后调用 Javascript 来获取新数据。

我希望有某种方法可以解决这个问题,这样我就可以使用 scrapy 而不是 selenium,因为 selenium 很慢。我取得的一些进展是我发现了以下类型的 URL(遗憾的是我不记得是如何发现的):

https://www.nycenet.edu/offices/d_chanc_oper/budget/dbor/galaxy/galaxybudgetsummaryto/default.aspx?DDBSSS_INPUT=M015

可以直接将您带到学校的数据(我认为无需与表单或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/

相关文章:

javascript - 我需要在 ionic 应用程序中读取 epub 文件

python - 安装python模块 "undefined symbol: PyString_FromStringAndSize"

ruby-on-rails - 如何测试 Apartment、Minitest、Capybara 和 Selenium

javascript - 如果在 iOS 设备上查看页面,是否可以从 Chrome 在 Safari 中打开新 URL?

javascript - "Error: path must be a string"(v5.10.0)

python - Sympy 旋转方向矩阵

python - 如何在Python和beautifulsoup中从CDATA中提取数据?

java - 如何使用 Java 单击 Selenium Webdriver 中弹出窗口上的按钮

testing - 基于简单文本的全网页回归测试

javascript - 如何将图像作为数据放入json中