2016-11-22 50 views
4

我目前開始使用美麗的網站來抓取網站,即使我缺乏關於網頁的理論知識,我想我已經掌握了一些基本知識,但我會盡我所能來制定我的問題。是否可以用美麗的方式來刮掉一個「動態網頁」?

我的意思是動態網頁的內容如下:一個網站的HTML根據用戶行爲而改變,在我的例子中它是可摺疊的表格。

我想獲得一些「div」標籤內的數據,但是當你加載頁面時,數據在html代碼中看起來不可行,當你點擊它擴展的表格時,這個「div 「從」可以摺疊的東西「變成」可摺疊的可摺疊的東西「這樣的變化,我可以用我的知識來刮擦。

我可以使用beautifulsoup獲取這些數據嗎?如果我不能,我想用硒之類的東西點擊所有的表格,然後下載我可以刮的html,有沒有更簡單的方法?

非常感謝。

+2

硒可能是您最好的選擇,然後使用'driver.page_source'來獲取HTML。如果你想要更具體的建議,看看一些代碼會很有幫助。 –

+0

問題是當頁面使用JavaScript/AJAX加載數據時。如果您知道'JavaScript/AJAX'使用哪個URL來獲取數據,那麼您可以使用'urllib/requests'來獲取這些數據。您可以在Chrome/Firefox中使用'DevTools'來手動查找這個URL,然後就可以在Python代碼中使用它。但是你必須瞭解HTTP,DevTools,有時候JavaScript,XPath等。BTW:關閉瀏覽器中的JavaScript和加載頁面,你會看到什麼urllib /請求(和BS)看到。 – furas

+0

[用BeautifulSoup刮掉一系列表格的可能的副本](http://stackoverflow.com/questions/13345085/scrape-a-series-of-tables-with-beautifulsoup) – aneroid

回答

0

這取決於。如果數據在頁面加載時已經加載,那麼數據可用於刮除,它只是在不同的元素中,或者被隱藏起來。如果點擊事件觸發以某種方式加載數據,則不會,您需要Selenium或其他無頭瀏覽器來自動執行此操作。

美麗的湯是只有一個HTML解析器,所以無論你通過請求頁面獲得的數據是美麗的湯可以訪問的唯一數據。