1

我试图在http://apps2.eere.energy.gov/wind/windexchange/economics_tools.asp上刮桌子

在此处输入图像描述

该表默认显示 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 个条目。如何获取此表中的所有行?

非常感谢!

4

1 回答 1

1

这个特定页面不需要干刮。因为您要获取的整个表格都在源代码 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 会话中为您提供 td 标签的节点。在这种情况下,你不需要漂亮的汤。

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

有用的参考

于 2017-02-19T01:30:45.933 回答