2016-06-09 60 views
0

我試圖刮掉從以下網站內容:從JavaScript的網頁刮隱藏的內容與Python

https://mobile.admiral.at/en/event/event/all#/event/15a822ab-84a1-e511-90a2-000c297013a7

成功地利用dryscrape我以前刮的內容和下面的代碼:

import dryscrape 
import webkit_server 
from lxml import html 

session = dryscrape.Session() 
session.set_timeout(20) 
session.set_attribute('auto_load_images', False) 
session.visit('https://mobile.admiral.at/en/event/event/all#/event/15a822ab-84a1-e511-90a2-000c297013a7') 
response = session.body() 
tree = html.fromstring(response) 

print(tree.xpath('(//td[@class="team-name"]/text())[1]')) 

上面的例子會打印出主隊(在這種情況下,將「法國」)

似乎源的結構已經改變了,所以我無法正確地抓取內容。

讓我困惑的是,我能夠使用Firefox Inspector工具查看標籤,但是當我拉動源代碼時,它在響應中不可見。

我認爲他們必須以某種方式隱藏內容,以使其無法(?)刮取數據。

難道有人請指出我正確的方向如何正確地刮內容。

回答

0

您需要的內容是使用jQuery(Ajax)加載的。我不知道最近dryscrape是否已經更新,但是最後一次我使用它不支持從jQuery加載的ajax內容...

無論如何..只要看看鉻的網絡檢查員,你會意識到主要內容是使用API​​加載的。你可以直接調用該API,你將得到一個真棒JSON與頁面的所有數據:

import requests 
data = requests.get('https://mobile.admiral.at/;apiVer=json;api=main;jsonType=object;apiRw=1/en/api/event/get-event?id=15a822ab-84a1-e511-90a2-000c297013a7').json()