2016-06-09 53 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()