python - 网络从表格中抓取某一行

标签 python web-scraping beautifulsoup

我正在努力从 this 中抓取某一行网站。

首先,表格元素中没有类,但我想我有一个解决方法。

我的问题是我想打印(或存储在变量中或访问数据)某一行, 假设第一个值为“Bollat​​e”的行:Screenshot of the row in the website

所以我编码:

import requests
import bs4

URL = "http://www.centrometeolombardo.com/content.asp?CatId=332&ContentType=Dati"

response = requests.get(URL)
soup = bs4.BeautifulSoup(response.text, "lxml")

table = soup.find(text="Bollate").find_parent("table")

for a in table:
    if a.text == "Bollate":
       for val in a.parent-find_next_siblings():
           print(val.text)

但我得到:

Traceback (most recent call last):
  File "/home/pi/Documents/Python/ngu.py", line 12, in <module>
   if a.text == "Bollate":
  File "/usr/lib/Python3/dist-packages/bs4/element.py", line 370, in _getattr_
   self._class_._name_, attr))
AttributeError: 'NavigableString' object has no attribute 'text'

这表明我错了,因为我得到的不是文本,但我不知道如何解决这个问题。

谢谢大家

最佳答案

您可以使用 pandas 获取 HTML 并解析表格。然后只需选择您需要的值。

方法如下:

import pandas as pd

url = "http://www.centrometeolombardo.com/content.asp?CatId=332&ContentType=Dati"
df = pd.read_html(url, flavor="bs4")[19]
print(df.loc[df[0] == "Bollate"])

输出:

         0     1     2      3  4  5
2  Bollate  -0.3  12.3  Brina  -  -

关于python - 网络从表格中抓取某一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67000250/

相关文章:

python - 如何添加基于 Pandas 中另一列的值的新列

python - boto3 分区和排序键上的 KeyConditionExpression

python - scrapy - 抓取下一页上的字段,然后返回到旧页面

r - 尝试从 FiveThirtyEight 抓取数据时出现错误

python - 如何在 Django 中使用 BeautifulSoup?

python - 如何修复 ssl.SSLError : [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl. c :1056)?

python - 将二进制字符串转换为 bool 数组并输出二进制文件

java - 网页抓取 - 从 Twitch.tv 获取信息

python - 我们可以将 XPath 与 BeautifulSoup 一起使用吗?

python - 查找包含给定文本的未知标签