脚本无法从网页中获取数据

Script cannot fetch data from a web page

我正在尝试在 Python 中编写一个程序,它可以获取股票名称及其价格并将其打印出来。但是,当我 运行 它时,什么也没有打印出来。从网站上获取数据似乎有问题。我仔细检查了网页的路径是否正确,但出于某种原因,文本不想显示。

from lxml import html
import requests
page = requests.get('https://www.bloomberg.com/quote/UKX:IND?in_source=topQuotes')
tree = html.fromstring(page.content)
Prices = tree.xpath('//span[@class="priceText__1853e8a5"]/text()')
print ('Prices:' , Prices)

here is the website I am trying to get the data from

我已经试过了BeautifulSoup,但还是有同样的问题。

如果您打印字符串 page.content,您会看到它捕获的网站代码实际上是用于验证码测试的,而不是您手动访问时看到的 "real" 目标页面本身网站。该网站似乎足够聪明,可以看出您对 URL 的请求来自脚本,而不是人工手动发出的,并且它有效地阻止了您的脚本抓取任何真实内容。所以 Prices 是空的,因为在这个特殊的验证码页面上根本没有 class "priceText__1853e8a5" 的跨度标记。当我尝试使用 urllib2.

进行抓取时,我得到了同样的结果

正如其他人所建议的那样,Selenium(实际的 Web 自动化)可能能够启动页面并为您提供所需的内容。 ID 看起来是动态生成的,尽管我在手动查看页面时确实得到了相同的 ID。另一种选择是简单地找到一个不同的站点,它可以为您提供所需的报价而不会阻止您的脚本。我用 https://tradingeconomics.com/ukx:ind 试了一下,效果很好。当然,您需要不同的 xpath 才能找到所需的单元格。