Python请求得到的HTML数据与浏览器不同;JS似乎不相关

2024-04-26 09:40:48 发布

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

我正试图从这个网站上搜集天气数据:

http://www.fastweather.com/yesterday.php?city=St.+Louis_MO

我遇到的问题是昨天的降水。在开发人员工具中查看时,我看到以下内容:

<strong>Yesterday's Precipitation</strong>
was 0.13 inches

但是从Python中查看它时,无论是使用请求还是urllib模块,我都会看到:

<strong>Yesterday\'s Precipitation</strong>
was T inches

我在浏览器中使用NoScript,我不允许运行所有JavaScript,但是0.13仍然出现。这个数字从何而来,如何用Python获得它?你知道吗

我在Unix系统上,这将是一个每天运行的脚本。我想避免硒,如果可能的话。你知道吗

即使有其他网站可以使用,我想知道为什么神秘的T存在。你知道吗


以下是我的相关代码:

webpage = requests.get("http://www.fastweather.com/yesterday.php?city=St.+Louis_MO")
if webpage.status_code == 200:
    content = str(webpage.content)

我也试过:

with requests.Session() as session:
    webpage = session.get("http://www.fastweather.com/yesterday.php?city=St.+Louis_MO")
    content = webpage.text

还有这个:

webpage = urllib.request.urlopen("http://www.fastweather.com/yesterday.php?city=St.+Louis_MO")
content = webpage.read()

(上面的代码中可能有一些小错误,因为我记不清每个方法是如何工作的。)


Tags: comhttpcity网站wwwcontentstrongmo
1条回答
网友
1楼 · 发布于 2024-04-26 09:40:48

您可以尝试以下代码以获得所需的输出:

import requests
from lxml import html

response = requests.get('http://www.fastweather.com/yesterday.php?city=St.+Louis_MO')
source = html.fromstring(response.text)
text_node = source.xpath('//div[@id="content"]//strong[.="Yesterday\'s Precipitation"]/following-sibling::text()[1]')[0]
print(text_node.strip())  # 'was 0.13 inches'

相关问题 更多 >