我试图从以下网站上删除内容:
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]'))
以上示例将打印主队(在这种情况下将是' France')
似乎源的结构已经改变,所以我无法正确地抓取内容。
让我感到困惑的是,我能够使用Firefox Inspector工具查看标签,但是当我拉动源时,它在响应中不可见。
我认为他们必须以某种方式隐藏内容,以便不可能(?)刮掉数据。
有人可以指出我正确的方向如何正确地抓取内容。
答案 0 :(得分:1)
使用jQuery(Ajax)加载您需要的内容。我不知道dryscrape最近是否有更新,但是我最后一次使用它并不支持从jQuery加载的ajax内容......
无论如何..只要看一下chrome的网络检查员,你就会发现主要内容是使用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()