Javascript beautifulsoup scrape中缺少html
我正试图从以下内容中提取数据表: 我希望自动化这个数据拉取,而不是每天手动下载xls文件。我查阅了他们的文档,发现除了执行刮取之外,没有其他简单的自动化方法。查看页面源,看起来这些数据存储在“nggrid”表中。具体而言,数据正在更新中 我使用beautifulsoup在python中创建了一个基线查询,以查看初始输出是什么 这是我的初始代码:Javascript beautifulsoup scrape中缺少html,javascript,python,html,web-scraping,beautifulsoup,Javascript,Python,Html,Web Scraping,Beautifulsoup,我正试图从以下内容中提取数据表: 我希望自动化这个数据拉取,而不是每天手动下载xls文件。我查阅了他们的文档,发现除了执行刮取之外,没有其他简单的自动化方法。查看页面源,看起来这些数据存储在“nggrid”表中。具体而言,数据正在更新中 我使用beautifulsoup在python中创建了一个基线查询,以查看初始输出是什么 这是我的初始代码: from bs4 import BeautifulSoup import requests page_link = 'https://www.pjm.
from bs4 import BeautifulSoup
import requests
page_link = 'https://www.pjm.com/planning/services-requests/interconnection-queues.aspx'
page_response = requests.get(page_link, timeout=5)
page_content = BeautifulSoup(page_response.content, "html.parser")
在页面内容中存储的数据拉取中,我没有获得与页面源相同的信息。在我期望的地方及其各种子信息,我被提供了以下打开和关闭的标签,中间没有数据:
<pjm-nggrid></pjm-nggrid>
有人知道如何访问nggrid中的数据吗?自动化xls/xml文件下载和解析,而不是刮取?通过Javascript异步加载数据。您可能想更改
“api-subscription-key”
,您可以在Chrome/Firefox开发者工具中看到该密钥:
注意(这将下载整个数据~10MB,您可以将'rowCount'
和'startRow'
更改为仅加载部分数据)
印刷品:
{
"items": [
{
"requestType": "GI",
"queueNumber": "A01",
"projectName": null,
"commercialName": "Ironwood",
"stateProvinceName": "PA",
"countyName": "Lebanon",
"projectStatus": "In Service",
"transmissionOwner": "ME",
"mw": 720.0,
"mwe": 720.0,
"mwc": 673.0,
"mweInservice": 673.0,
...and so on.
这工作做得很好!我对网页抓取和使用这些工具还不熟悉,所以这非常有用。接下来,您发现获取正确url以获取此类数据的最佳方法是什么?我在上遵循了步骤,它似乎与您提供的信息相匹配。@DaveWilson嗯,在这方面,每个页面都有一点不同。但是打开Firefox/Chrome开发者工具,看看页面在哪里(以及如何)发出请求是一个好的开始。
{
"items": [
{
"requestType": "GI",
"queueNumber": "A01",
"projectName": null,
"commercialName": "Ironwood",
"stateProvinceName": "PA",
"countyName": "Lebanon",
"projectStatus": "In Service",
"transmissionOwner": "ME",
"mw": 720.0,
"mwe": 720.0,
"mwc": 673.0,
"mweInservice": 673.0,
...and so on.