2017-05-15 8 views
0

一般に、私はこのサイトから少なくともいくつかのタグを取得しようとし、常にnoneを返します。私はこれをどのように修正するのか分かりません。Pythonパーサーの出力なし

ボタンがあります。チケットを横から押した後に追加のパネルがあるので、解析したいのですが、わかりません。私が理解しているように、このタブはクリック直後にロードされません。次に何をするのか分かりません。 P.S.ちょうどそれを学び始めた。 Webページhttp://toto-info.co/のbody要素は、「パネルオープン」クラスの属性が含まれていないためだろう

# 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

このようなサイトは、セレン(*参照* http://selenium-python.readthedocs.io/)の助けを借りて時々削り取ることができます。 Seleniumでできることの1つは、 'webdriver'の' execute_script'メソッドを使ってJavascriptコードを実行することです。たとえば、 'document.documentElement.outerHTML'を実行することができます。私は、HTML5 APIによってローカルストアに書き込むことができることを理解しています。しかし、私はまだ詳細を調べる必要があります。 –

答えて

0

あなたはbody要素は、あなたのコード内の行を変更することにより、含まれているかを見ることができます。

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

table = soup.find('body') 

にこれは今body要素とそれに含まれるすべての要素を出力します。

body要素にはスクリプト以外のスクリプトが含まれていることがわかります。スクリプトをレンダリングするには、他のテクノロジーを使用する必要があります。 Web-scraping JavaScript page with Python

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

しかし、それは、このページから選択します:

あなたが興味を持っている場合は、クラス別の何かを選択しない例がある

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

が、それはこの上に関するすべてのマークアップのありますJavaScriptなしで表示されるページ。