gpt4 book ai didi

python - 访问html标签中的特定表

转载 作者:行者123 更新时间:2023-11-29 20:56:56 24 4
gpt4 key购买 nike

我将使用 beautifulsoup 来查找在以下链接的“内容逻辑定义”中定义的表:

1) https://www.hl7.org/fhir/valueset-account-status.html
2) https://www.hl7.org/fhir/valueset-activity-reason.html
3) https://www.hl7.org/fhir/valueset-age-units.html

页面中可以定义多个表。我想要的表位于<h2> tag with text “content logical definition”下。有些页面可能缺少“内容逻辑定义”部分中的任何表,因此我希望该表为空。到目前为止,我尝试了几种解决方案,但每个解决方案都为某些页面返回错误的表。

alecxe 提供的最后一个解决方案是:

import requests
from bs4 import BeautifulSoup

urls = [
'https://www.hl7.org/fhir/valueset-activity-reason.html',
'https://www.hl7.org/fhir/valueset-age-units.html'
]

for url in urls:
r = requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')

h2 = soup.find(lambda elm: elm.name == "h2" and "Content Logical Definition" in elm.text)
table = None
for sibling in h2.find_next_siblings():
if sibling.name == "table":
table = sibling
break
if sibling.name == "h2":
break
print(table)

如果“内容逻辑定义”部分中没有表,则此解决方案返回 null,但对于“内容逻辑定义”中包含表的第二个 url,它返回错误的表,即页面末尾的表。
我如何编辑此代码以访问在具有“内容逻辑定义”文本的标签之后精确定义的表,如果此部分中没有表,则返回 null。

最佳答案

看起来alecxe代码的问题在于它返回一个与h2直接同级的表,但你想要的表实际上是在一个div中(它是h2的同级)。这对我有用:

import requests
from bs4 import BeautifulSoup

urls = [
'https://www.hl7.org/fhir/valueset-account-status.html',
'https://www.hl7.org/fhir/valueset-activity-reason.html',
'https://www.hl7.org/fhir/valueset-age-units.html'
]


def extract_table(url):
r = requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')

h2 = soup.find(lambda elm: elm.name == 'h2' and 'Content Logical Definition' in elm.text)
div = h2.find_next_sibling('div')
return div.find('table')


for url in urls:
print extract_table(url)

关于python - 访问html标签中的特定表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37552550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com