2017-05-15 98 views
0

通常,我嘗試從此站點獲取至少一些標記,並且始終不給出任何標記。我不知道如何解決這個問題。Python分析器輸出無

有一個按鈕票,從側面按下後有一個額外的面板,所以我想解析它,我不明白如何。據我瞭解,點擊後不會立即加載此選項卡,下一步我不明白。附:剛開始學習它。

# 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

像這樣的網站有時可以在Selenium的幫助下被刮掉(*見* http://selenium-python.readthedocs.io/)。您可以使用Selenium做的一件事是使用'webdriver'的'execute_script'方法來執行Javascript代碼。例如,你可以執行'document.documentElement.outerHTML'。我知道HTML5 API可以寫入本地商店;不過,我還沒有弄清楚細節。 –

回答

0

這將是因爲網頁http://toto-info.co/的主體元素不包含類屬性「面板中打開」。

你可以看到body元素包含了通過改變行代碼:

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

table = soup.find('body') 

現在,這將打印體元素,它包含的所有元素。

正如您將看到body元素包含非常少的腳本,如果您想讓腳本呈現您將不得不使用其他技術,我建議您對初學者進行Google搜索,例如, Web-scraping JavaScript page with Python

,做選擇由類的東西,如果你有興趣的一個例子是:

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

但是,從這個頁面選擇:

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

不過也差不多所有的標記在這個在沒有JavaScript的情況下顯示的頁面。