Ich versuche, etwas Text von einer Webseite zu kratzen. Auf meiner Webseite gibt es eine Liste von Wörtern, die angezeigt werden. Einige von ihnen sind sichtbar, andere werden sichtbar, wenn ich auf "+ Mehr" klicke. Einmal geklickt, ist die Liste der Wörter immer gleich (gleiche Reihenfolge gleiche Wörter). Einige davon sind jedoch fett gedruckt, andere sind gelöscht. Also im Grunde hat jedes Element der Datenbank einige Funktionen. Was ich gerne tun würde: Für jeden Artikel sagen Sie mir, welche Funktionen verfügbar sind und welche nicht. Mein Problem ist, den "+ More" -Button zu überwinden.Wie scrappe ich versteckten Text von einer Webseite?
Mein Skript funktioniert nur für die angezeigten Wörter und nicht für diejenigen, die durch "+ More" verdeckt sind. Was ich versuche, ist, alle Wörter zu sammeln, die unter dem Knoten "del" folgen. Ich dachte zunächst, dass durch lxml würde die Webseite geladen wurde, wie es Element in Chrom inspizieren erscheint und ich schrieb meinen Code entsprechend:
from lxml import html
tree = html.fromstring(br.open(current_url).get_data())
mydata={}
if len(tree.xpath('//del[text()='some text']')) > 0:
mydata['some text'] = 'text is deleted from the web page!'
else:
mydata['some text'] = 'text is not deleted'
Jedes Mal, wenn ich diesen Code lief, was ich sammeln kann, ist tatsächlich Teil der Daten wird auf der Webseite angezeigt, aber nicht die vollständige Liste der Wörter, die nach dem Klicken auf "+ More" angezeigt werden würden.
Ich hatte versucht Selen, aber soweit ich verstehe, ist es nicht zum Parsen gedacht, sondern um mit der Webseite zu interagieren. Aber wenn ich das ausgeführt habe:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.mywebpage.co.uk')
a = driver.find_element_by_xpath('//del[text()="some text"]')
Ich bekomme entweder das Element oder einen Fehler. Ich möchte eine leere Liste bekommen, damit ich tun konnte:
mydata = {}
if len(driver.find_element_by_xpath('//del[text()="some text"]')) > 0:
mydata['some text'] = 'text is deleted from the web page!'
else:
mydata['some text'] = 'text is not deleted'
oder einen anderen Weg finden, um diese „versteckte“ Elemente vom Skript erfasst zu erhalten.
Meine Frage ist, hat jemand diese Art von Problem gehabt? Wie haben sie das geregelt?
Hallo @RemcoW. Danke für die Antwort. Ja, auf meiner Webseite gibt es eine Liste der angezeigten Wörter. Einige von ihnen sind sichtbar, andere werden sichtbar, wenn ich auf "+ Mehr" klicke. Einmal geklickt, ist die Liste der Wörter immer gleich (gleiche Reihenfolge gleiche Wörter). Einige davon sind jedoch fett gedruckt, andere sind gelöscht. Also im Grunde hat jedes Element der Datenbank einige Funktionen. Was ich gerne tun würde: Für jeden Artikel sagen Sie mir, welche Funktionen verfügbar sind und welche nicht. Mein Problem ist, den "+ More" -Button zu überwinden. – user0978189
Mein Skript funktioniert nur für die angezeigten Wörter und nicht für die, die durch "+ More" verdeckt sind. Ich werde deinen Code ausprobieren und dich wissen lassen. Meine Angst mit Selen ist, dass es sehr langsam aussieht ... – user0978189
Es öffnet nur die Webseite und speichert keine Daten in meinem Wörterbuch.; ( – user0978189