ich beautifulsoup verwenden werde einen Tisch zu finden, die in der „Inhalt logische Definition“ definiert in den folgenden Links:Zugang zu einer bestimmten Tabelle in HTML-Tag
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
Mehrere Tabellen auf den Seiten definiert werden kann, . Die gewünschte Tabelle befindet sich unter <h2> tag with text “content logical definition”
. Auf einigen Seiten fehlt möglicherweise eine Tabelle im Abschnitt "logische Inhaltsdefinition", daher sollte die Tabelle null sein. Inzwischen habe ich mehrere Lösungen ausprobiert, aber jeder von ihnen gibt für einige der Seiten eine falsche Tabelle zurück.
Die letzte Lösung, die von alecxe angeboten wurde, ist dies:
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)
Diese Lösung gibt null zurück, wenn keine Tabelle im Abschnitt „Inhalt logischer Definition“ aber für die zweite URL mit Tabelle in „Inhalt befindet logische Definition "gibt es falsche Tabelle, eine Tabelle am Ende der Seite.
Wie kann ich diesen Code bearbeiten, um auf eine Tabelle zuzugreifen, die genau nach dem Tag mit dem Text "logische Inhaltsdefinition" definiert wurde, und wenn in diesem Abschnitt keine Tabelle vorhanden ist, wird null zurückgegeben.
Es gibt drei Tabellen auf der Webseite. Welchen Tisch suchst du? – Vivek
Können Sie genau notieren, auf welcher Seite Sie das Problem haben? Ich weiß nicht, auf welche zweite URL du dich beziehst. – bmcculley
Sind Sie offen für die Verwendung von Lxml? –