vor kurzem habe ich begonnen, mehrere Seiten zu kratzen, aber die Struktur der Seite ist wirklich schwer zu kratzen. Es hat viele "nth type" -Elemente, die keine Klassen für jedes Selbst haben. Aber ihre Eltern teilen dieselbe Klasse. Ich arbeite mit BeautifulSoup und es war toll, bis ich diese schreckliche Code sah ...Python BeautifulSoup scrape Nth-Art von Elementen
<div class="detail-50">
<div class="detail-panel-wrap">
<h3>Contact details</h3>
Website: <a href="http://www.somewebsitefrompage.com">http://www.somewebsitefrompage.com</a><br />Email: <a href="mailto:somemailfrompage.com">somemailfrompage.com</a><br />Tel: 11111111 111
</div>
</div>
Für jetzt ist es ok scheint, aber ich möchte Webseite, E-Mail und Tel abzuschaben. separat. Ich habe versucht, mit vielen Methoden wie
website = soup.select('div.detail-panel-wrap')[1].text`
Aber funktioniert nicht .. Jetzt kommt sehr großes Problem, wenn andere Elemente derselben Klasse wie Kontaktdaten haben:
<div class="detail-50">
<div class="detail-panel-wrap">
<h3>Public address</h3>
Mr Martin Austin, Some street, Some city, some ZIP
</div>
</div>
Dieses ist für Adresse ist, auch Ich brauche das auch gekratzt. Es gibt viele andere "div" Namen wie diese beiden. Hat jemand eine Lösung? Wenn jemand nicht verstanden hat, kann ich es besser, sorry für schlechte Erklärung erklären ..
UPDATE
Mit einigen Wählern Software, die ich herausgefunden habe, wie es sein soll, aber es ist in Python schwierig, es zu schreiben. . Hier ist, wie Telefon von Seite zu finden:
div#ContentPlaceHolderDefault_cp_content_ctl00_CharityDetails_4_TabContainer1_tpOverview_plContact.detail-panel div.detail-50:nth-of-type(1) div.detail-panel-wrap
Dies ist für Adresse ist
div#ContentPlaceHolderDefault_cp_content_ctl00_CharityDetails_4_TabContainer1_tpOverview_plContact.detail-panel div.detail-50:nth-of-type(2) div.detail-panel-wrap
Dies ist für Website-
div.detail-50 a:nth-of-type(1)
Und dieser für den Kontakt E-Mail
div.detail-panel-wrap a:nth-of-type(2)
Hinweis: ContentPlaceHolderDefault_cp_content_ctl00_CharityDetails_4_TabContainer1_tpOverview_plContact
ist Mutter div class an der Spitze all diesen.
Hat jemand eine Idee, wie man diese in BS4 Python schreibt?
Hallo, ich danke Ihnen für Ihre Hilfe, Sie können ein Update sehen, das ich angehängt habe, wie es direkt sein sollte, aber das Problem ist, wie man es in Python-Code schreibt. – Ukii
@Ukii, die Selektoren, die Sie in Ihrer Bearbeitung hinzugefügt haben, scheinen etwas zu sein, das Sie von Chrome-Tools kopiert haben und funktionieren möglicherweise nicht auf der tatsächlichen Quelle, aber unabhängig davon müssen Sie buchstäblich genau so wie sie in einer Auswahl sind –