2017-05-15 3 views
0

Im Allgemeinen versuche ich, mindestens einige Tags von dieser Site zu bekommen, und gibt immer keine. Ich habe keine Ahnung, wie ich das beheben kann.Python-Parser-Ausgaben Keine

Es gibt eine Schaltfläche Tickets, nachdem Sie es von der Seite drücken gibt es ein zusätzliches Panel, also möchte ich es analysieren, ich kann nicht verstehen, wie. Wie ich es verstehe, wird diese Registerkarte nicht sofort nach dem Klicken geladen, was ich als nächstes nicht verstehe. P.S. habe gerade angefangen es zu lernen.

# coding: utf-8-sig 
import urllib.request 
from bs4 import BeautifulSoup 

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"} 

def get_html(url): 

    request = urllib.request.Request(url,None,headers) 
    response = urllib.request.urlopen(request) 
    return response.read() 

def parse(html): 

    soup = BeautifulSoup(html,"html.parser") 
    table = soup.find('body', class_='panel-open') 
    print(table) 

def main(): 
    parse(get_html('http://toto-info.co/')) 

if __name__ == '__main__': 
    main() 
+0

Seiten wie diese können manchmal mit Hilfe von Selen (* siehe * http://selenium-python.readthedocs.io/) gekratzt werden. Eine Sache, die Sie mit Selenium machen können, ist die 'execute_script' Methode von' webdriver' um Javascript Code auszuführen. Zum Beispiel können Sie 'document.documentElement.outerHTML' ausführen. Ich verstehe, dass die HTML5-API es ermöglicht, in lokalen Speicher zu schreiben; Ich muss jedoch noch Details ausarbeiten. –

Antwort

0

, dass, weil das Körperelement http://toto-info.co/ der Web-Seite wäre nicht das Klassenattribut „Panel-open“ enthalten.

können Sie sehen, was das Körperelement enthält, die durch die Zeile im Code zu ändern:

table = soup.find('body', class_='panel-open') 

zu

table = soup.find('body') 

Dieses nun das Körperelement gedruckt wird und alle Elemente, die sie enthält.

Wie Sie sehen werden das Body-Element enthält sehr wenig außer Skript, wenn Sie das Skript zum Rendern bekommen wollen, müssen Sie andere Technologien verwenden Ich schlage vor, dass Sie eine Google-Suche für Starter z. Web-scraping JavaScript page with Python.

Ein Beispiel, das etwas von Klasse tut wählen, wenn Sie daran interessiert sind, ist:

table = soup.find('div', class_='standalone') 

Aber das wählt auf dieser Seite:

<div class="standalone" data-app="" id="app"></div> 

aber das ist über alle Markup auf diese Seite, die ohne JavaScript angezeigt wird.

Verwandte Themen