如何使用 BeafutifulSoup 从 html 文档中获取没有 class 或 id 的特定 tr 元素?
How to get a specific tr element without class or id from a html document with BeafutifulSoup?
我有这个网页https://www.epant.gr/apofaseis-gnomodotiseis/item/1451-apofasi-730-2021.html
我需要从大 table 中删除倒数第二行。
换句话说,我需要从 table.
得到这个 (Ένδικα Μέσα -)
这是我目前的进度
from bs4 import BeautifulSoup as soup
import requests
import csv
URL = 'https://www.epant.gr/apofaseis-gnomodotiseis/item/1451-apofasi-730-2021.html'
headers1 = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-61acac03-6279b8a6274777eb44d81aae",
"X-Client-Data": "CJW2yQEIpLbJAQjEtskBCKmdygEIuevKAQjr8ssBCOaEzAEItoXMAQjLicwBCKyOzAEI3I7MARiOnssB" }
page = requests.get(URL, headers = headers1)
soup1 = BeautifulSoup(page.content,"html.parser")
soup2 = BeautifulSoup(soup1.prettify(), "html.parser")
soup3 = soup2.find('td', text = "Ένδικα Μέσα")
print(soup3)
非常感谢
非常感谢,效果很好
您可以使用该字段的选择器。有一种简单的方法可以使用浏览器的检查器复制元素的选择器,然后在复制 > 复制选择器中单击所需的 html 标记。
有了美汤就可以用了soup.select(selector)
。 The documentation 描述得更好。
你接近解决方案 - 清理你的汤并尝试获得结果的父级,这将为你提供整个 tr:
soup.find('td', text = "Ένδικα Μέσα").parent.get_text(strip=True)
或find_next('td)
访问其邻居的文本:
soup.find('td', text = "Ένδικα Μέσα").find_next('td').text
示例
from bs4 import BeautifulSoup
import requests
import csv
URL = 'https://www.epant.gr/apofaseis-gnomodotiseis/item/1451-apofasi-730-2021.html'
headers1 = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-61acac03-6279b8a6274777eb44d81aae",
"X-Client-Data": "CJW2yQEIpLbJAQjEtskBCKmdygEIuevKAQjr8ssBCOaEzAEItoXMAQjLicwBCKyOzAEI3I7MARiOnssB" }
page = requests.get(URL, headers = headers1)
soup = BeautifulSoup(page.content,"html.parser")
row = soup.find('td', text = "Ένδικα Μέσα").parent.get_text(strip=True)
print(row)
输出
Eνδικα Μέσα -
我有这个网页https://www.epant.gr/apofaseis-gnomodotiseis/item/1451-apofasi-730-2021.html
我需要从大 table 中删除倒数第二行。 换句话说,我需要从 table.
得到这个 (Ένδικα Μέσα -)这是我目前的进度
from bs4 import BeautifulSoup as soup
import requests
import csv
URL = 'https://www.epant.gr/apofaseis-gnomodotiseis/item/1451-apofasi-730-2021.html'
headers1 = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-61acac03-6279b8a6274777eb44d81aae",
"X-Client-Data": "CJW2yQEIpLbJAQjEtskBCKmdygEIuevKAQjr8ssBCOaEzAEItoXMAQjLicwBCKyOzAEI3I7MARiOnssB" }
page = requests.get(URL, headers = headers1)
soup1 = BeautifulSoup(page.content,"html.parser")
soup2 = BeautifulSoup(soup1.prettify(), "html.parser")
soup3 = soup2.find('td', text = "Ένδικα Μέσα")
print(soup3)
非常感谢
非常感谢,效果很好
您可以使用该字段的选择器。有一种简单的方法可以使用浏览器的检查器复制元素的选择器,然后在复制 > 复制选择器中单击所需的 html 标记。
有了美汤就可以用了soup.select(selector)
。 The documentation 描述得更好。
你接近解决方案 - 清理你的汤并尝试获得结果的父级,这将为你提供整个 tr:
soup.find('td', text = "Ένδικα Μέσα").parent.get_text(strip=True)
或find_next('td)
访问其邻居的文本:
soup.find('td', text = "Ένδικα Μέσα").find_next('td').text
示例
from bs4 import BeautifulSoup
import requests
import csv
URL = 'https://www.epant.gr/apofaseis-gnomodotiseis/item/1451-apofasi-730-2021.html'
headers1 = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-61acac03-6279b8a6274777eb44d81aae",
"X-Client-Data": "CJW2yQEIpLbJAQjEtskBCKmdygEIuevKAQjr8ssBCOaEzAEItoXMAQjLicwBCKyOzAEI3I7MARiOnssB" }
page = requests.get(URL, headers = headers1)
soup = BeautifulSoup(page.content,"html.parser")
row = soup.find('td', text = "Ένδικα Μέσα").parent.get_text(strip=True)
print(row)
输出
Eνδικα Μέσα -