我想通过网络抓取获取实时天气数据.我想用BeautifulSoup来做这个.

<span class="Column--precip--3JCDO">
  <span class="Accessibility--visuallyHidden--H7O4p">Chance of Rain</span>
  3%
</span>

我想从这个容器里拿出百分之三.我已经设法从网站上获取数据,使用这个代码片段用于另一个部分.

temp_value = soup.find("span", {"class":"CurrentConditions--tempValue--MHmYY"}).get_text(strip=True)

我试过同样的雨预报

rain_forecast = soup.find("span", {"class": "Column--precip--3JCDO"}).get_text(strip=True)

但我的控制台输出的输出是--print(rain_forecast). 我能看到的唯一区别是,在应该从跨度中得到的"文本"之间还有另一个跨度.

我在堆栈溢出中遇到的另一种方法是使用Selenium,因为数据还没有加载到变量中,因此输出是--.

但我不知道这对我的应用程序来说是大材小用,或者是否有更简单的解决方案来解决这个问题.

推荐答案

如果你想得到今天的预测表,你可以使用这个例子:

import pandas as pd
import requests
from bs4 import BeautifulSoup

headers = {"User-Agent": "Mozilla/5.0"}

url = "https://weather.com/en-IN/weather/today/l/a0e0a5a98f7825e44d5b44b26d6f3c2e76a8d70e0426d099bff73e764af3087a"
soup = BeautifulSoup(requests.get(url, headers=headers).content, "html.parser")

today_forecast = []
for a in soup.select(".TodayWeatherCard--TableWrapper--globn a"):
    today_forecast.append(
        t.get_text(strip=True, separator=" ") for t in a.find_all(recursive=False)
    )

df = pd.DataFrame(
    today_forecast, columns=["Time of day", "Degrees", "Text", "Chance of rain"]
)

print(df)

打印:

  Time of day Degrees                 Text          Chance of rain
0     Morning    11 °        Partly Cloudy                      --
1   Afternoon    20 °        Partly Cloudy                      --
2     Evening    14 °  Partly Cloudy Night  Rain Chance of Rain 3%
3   Overnight    10 °               Cloudy  Rain Chance of Rain 5%

Python相关问答推荐

如何使用Jinja语法在HTML中重定向期间传递变量?

Python在tuple上操作不会通过整个单词匹配

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

pandas DataFrame GroupBy.diff函数的意外输出

如何在Windows上用Python提取名称中带有逗号的文件?

有症状地 destruct 了Python中的regex?

删除字符串中第一次出现单词后的所有内容

如何使用pytest来查看Python中是否存在class attribution属性?

Pre—Commit MyPy无法禁用非错误消息

所有列的滚动标准差,忽略NaN

如何在UserSerializer中添加显式字段?

如何指定列数据类型

旋转多边形而不改变内部空间关系

为什么调用函数的值和次数不同,递归在代码中是如何工作的?

python sklearn ValueError:使用序列设置数组元素

用两个字符串构建回文

在我融化极点数据帧之后,我如何在不添加索引的情况下将其旋转回其原始形式?

我可以不带视频系统的pygame,只用于游戏手柄输入吗?''

在matplotlib中重叠极 map 以创建径向龙卷风图

ValueError:必须在Pandas 中生成聚合值