2016-05-04 5 views
1

Wenn ich die Seitenquelle in meinem Browser anzeigen, erscheint der HTML-Code, nach dem ich suche. Wenn ich jedoch Anfragen mit Python-Anfragen mache, wird das HTML nicht angezeigt.Fehlende HTML-Antwort mit Python-Anfragen und beautifulsoup4

Die URL, die ich versuche zu kratzen ist http://dota2lounge.com/match?m=13362, und die spezifische HTML, die ich auf der Seite bin, ist.

<div class="full"> 
    <a class="button" onclick="ChoseEvent(13362,'Whole Match',false)">Match</a> 
    <a class="button" onclick="ChoseEvent(13392,'1st Game','1462327200')">1st Game</a> 
    <a class="button" onclick="ChoseEvent(13424,'2nd Game','1462327200')">2nd Game</a> 
    <br><div id="toma" class="full" style="background: #444;line-height: 2.5rem;border: 1px solid #333;text-align: center;">Whole Match</div> 
</div> 

Ich möchte die 'onclick' Werte der Tasten erhalten. Bisher habe ich es versucht:

r = requests.get('http://dota2lounge.com/match?m=13268') 
soup = bs(r.content, 'lxml') 
buttons = soup.find_all('a', class_='button') 

Was nicht funktioniert.

Scheint nicht, das HTML auch zu zeigen.

+0

Versuchen Sie '' 'soup.find_all ('a', 'button')' ''. Btw klingt, als hätten Sie einen Tippfehler in der param-Klasse: '' 'soup.find_all ('a', class = 'button')' '' –

Antwort

0

versuchen diese

soup = BeautifulSoup(r.text, "html.parser") 
for link in soup.findAll('a'): 
     print link.get('onclick') 
+0

Danke, aber ich habe versucht, Ihren vorgeschlagenen Parser und das hat nicht funktioniert. Wenn ich in den Text von der Request-Antwort schaue, kann ich das HTML dort immer noch nicht sehen. Gibt es irgendwelche Gründe, warum es in meinem Browser, aber nicht in der Python-Anfrage gerendert würde? – Peter

+0

Ich habe nicht gefunden, Ihre HTML-Abschnitt im Quellcode und versuchen Sie diesen Code auf http://dota2lounge.com/match?m=13362 URL finden Sie 2 onclick selectTeam ($ (this), 'a') FUNKTIONEN dort. – Suraj

0

wie die Elemente Sieht man von javascript werden hinzugefügt wollen, die nicht laufen wird, wenn Sie die Anfrage in Python zu machen. Überprüfen Sie this question.

Wenn Sie nur einmal scrapen (dh Sie wollen nur die Daten und Sie versuchen nicht, einen Bot zu bauen, um das Spiel für Sie zu spielen), ist die schnellste Option oft einfach eine .htm-Datei zu erstellen nur Links zu jeder Seite, die Sie kratzen möchten (setzen Sie jeden Link in ein <a> Tag, Sie brauchen nicht einmal Text). Dann können Sie ein Tool wie downthemall in Firefox verwenden, um eine lokale Kopie jeder Seite mit der richtigen Formatierung zu speichern.

Verwandte Themen