gpt4 book ai didi

javascript - dryscrape 和 BeautifulSoup 获取 js 渲染的 iframe 中的所有行

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:54 24 4
gpt4 key购买 nike

我正在尝试抓取 http://apps2.eere.energy.gov/wind/windexchange/economics_tools.asp 上的 table

enter image description here

该表默认显示 5 个条目。我使用 dryscrape 和 BeautifulSoup 如下:

import dryscrape
from bs4 import BeautifulSoup
myurl = 'http://apps2.eere.energy.gov/wind/windexchange/economics_tools.asp'
session = dryscrape.Session()
session.visit(myurl)
response = session.body()
soup = BeautifulSoup(response,'lxml')
table = soup.find_all("td")

但这仅返回该表的默认 5 条记录。如何获取该表中的所有行?

非常感谢!

最佳答案

此特定页面不需要 dryscrape。因为您尝试获取的整个表格都在源代码 html 中,所以您可以执行以下操作:

from bs4 import BeautifulSoup
import requests

myurl = 'http://apps2.eere.energy.gov/wind/windexchange/economics_tools.asp'
soup = BeautifulSoup(requests.get(myurl).text,'lxml')
table = soup.find_all("td")

或者,使用您当前的设置:

table = session.xpath('//td')

将为您提供 dryscrape session 中 td 标签的节点。在这种情况下,你不需要漂亮的汤。

session.body() 为您提供当前加载到 dom 中的 html。因为 java 脚本正在对此进行操作并改变 dom 中的内容。因此,您可以执行一个 for 循环,在 session 中单击每个下一个按钮,并在每次迭代后将 body 喂入 BeautifulSoup 中,但这对我来说似乎没有必要。

useful reference

关于javascript - dryscrape 和 BeautifulSoup 获取 js 渲染的 iframe 中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42319819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com