用beauthulsoup和Selenium解析网站

2024-06-16 11:47:09 发布

您现在位置:Python中文网/ 问答频道 /正文

从:https://usclimatedata.com/climate/binghamton/new-york/united-states/usny0124中提取平均温度与实际温度的比较

我可以成功地收集网页的源代码,但我很难通过它解析,只给出“历史”选项卡下的高温、低温、降雨和平均值的值,但如果没有得到“无”的唯一结果,我似乎无法找到正确的类/id。在

到目前为止,我得到的结果是,最后一行是只尝试获得高温:

from lxml import html
from bs4 import BeautifulSoup
from selenium import webdriver

url = "https://usclimatedata.com/climate/binghamton/new-york/unitedstates/usny0124"
browser = webdriver.Chrome()
browser.get(url)
soup = BeautifulSoup(browser.page_source, "lxml")
data = soup.find("table", {'class': "align_right_climate_table_data_td_temperature_red"})

Tags: fromhttpsimportbrowsercomnewlxmlwebdriver
1条回答
网友
1楼 · 发布于 2024-06-16 11:47:09

首先,这是两个不同的类-align_right和{}-您将它们连接起来并出于某种原因添加了{}。并且,具有这两个类的元素是td元素,而不是{}。在

在任何情况下,要获得气候表,您应该寻找div元素,该元素具有id="climate_table"

climate_table = soup.find(id="climate_table")

另一个需要注意的重要事项是,这里存在“时间”问题的潜在可能性——当你得到driver.page_source值时,气候信息可能不在那里。通常在导航到页面后添加一个Explicit Wait

^{pr2}$

请注意,添加了try/finally,它可以在出现错误时安全关闭浏览器-这也有助于避免“挂起”浏览器窗口。在

而且,看看^{}它可以神奇地将你的气候信息表读入^{}自动档。在

相关问题 更多 >