2016-06-09 17 views
0

Ich versuche, den Inhalt von der folgenden Website zu kratzen:Scraping versteckte Inhalte von einer Javascript-Webseite mit Python

https://mobile.admiral.at/en/event/event/all#/event/15a822ab-84a1-e511-90a2-000c297013a7

Ich habe gekratzt vorher den Inhalt erfolgreich dryscrape verwenden und den folgenden Code:

import dryscrape 
import webkit_server 
from lxml import html 

session = dryscrape.Session() 
session.set_timeout(20) 
session.set_attribute('auto_load_images', False) 
session.visit('https://mobile.admiral.at/en/event/event/all#/event/15a822ab-84a1-e511-90a2-000c297013a7') 
response = session.body() 
tree = html.fromstring(response) 

print(tree.xpath('(//td[@class="team-name"]/text())[1]')) 

Das obige Beispiel würde die Heimmannschaft drucken (die in diesem Fall wäre ‚Frankreich‘)

Es scheint, dass die Struktur der Quelle geändert wurde, so dass ich den Inhalt nicht richtig abkratzen kann.

Was mich verwirrt ist, dass ich die Tags mit dem Firefox Inspector Tool sehen kann, aber es ist nicht in der Antwort sichtbar, wenn ich die Quelle ziehe.

Ich nehme an, sie müssen den Inhalt irgendwie versteckt haben, um es unmöglich zu machen (?), Die Daten zu kratzen.

Könnte jemand bitte mich in die richtige Richtung weisen, wie man den Inhalt richtig abkratzt.

Antwort

0

Der Inhalt, den Sie benötigen, wird mit jQuery (Ajax) geladen. Ich weiß nicht, ob dryscrape in letzter Zeit aktualisiert wurde, aber das letzte Mal, als ich es verwendete, unterstützte Ajax Inhalt von jQuery nicht geladen ...

Wie auch immer .. nur einen Blick auf den Netzwerk-Inspektor von Chrom werden Sie erkennen, dass der Hauptinhalt über eine API geladen wird. Sie können diese API direkt aufrufen, und Sie erhalten eine tolle JSON mit allen Daten der Seite:

import requests 
data = requests.get('https://mobile.admiral.at/;apiVer=json;api=main;jsonType=object;apiRw=1/en/api/event/get-event?id=15a822ab-84a1-e511-90a2-000c297013a7').json()