从HTML文档获取XPath

2024-10-01 04:50:00 发布

您现在位置:Python中文网/ 问答频道 /正文

https://next.newsimpact.com/NewsWidget/Live

我正在尝试编写一个python脚本,它将从上面链接中的HTML表中获取一个值。上面的链接是我试图从中抓取的网站,这是我写的代码。我认为我的XPath可能不正确,因为它在其他元素上运行良好,但是我使用的路径没有返回/打印任何内容。在

from lxml import html
import requests
page = requests.get('https://next.newsimpact.com/NewsWidget/Live')
tree = html.fromstring(page.content)

#This will create a list of buyers:
value = tree.xpath('//*[@id="table9521"]/tr[1]/td[4]/text()')

print('Value: ', value)

奇怪的是,当我打开“查看源代码”页时,我找不到要从中提取的表。 谢谢你的帮助!在


Tags: httpsimport脚本comlivetreevalue链接
2条回答

初始页面源中缺少必需的数据-它来自XHR。您可以得到如下信息:

import requests

response = requests.get('https://next.newsimpact.com/NewsWidget/GetNextEvents?offset=-120').json()

first_previous = response['Items'][0]['Previous']  # Current output - "2.632"
second_previous = response['Items'][1]['Previous']  # Currently - "0.2"
first_forecast = response['Items'][0]['Forecast']  # ""
second_forecast = response['Items'][1]['Forecast']  # "0.3"

您可以将response解析为简单的Python dict并获得所有必需的数据

你的问题很简单,request根本不处理。值是JS生成的!在

如果您真的需要运行这个,那么您需要使用一个能够理解JS的模块,比如。在

您可以通过首先使用或在浏览器中禁用JS来测试何时需要JS。使用firefox:about:config在导航栏中,然后搜索javascript.enabled,然后双击它在真或假之间切换

,打开chrome dev tools,在某处有一个选项。在

检查https://github.com/makinacorpus/spynner

另一个(可能的)问题是,使用tree = html.fromstring(page.text)而不是tree = html.fromstring(page.content)

相关问题 更多 >