pythonxpath返回空列表?

2024-09-20 05:48:55 发布

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

我试图从this webpage中获取信息。
这是一个screenshot如果网页不工作。


我试图打印第一个<span>元素中的文本。

我复制了googlechrome中Inspect元素视图提供的XPath(见上面的屏幕截图),并且
//*[@id="main"]/div[1]/div/div/div[2]/p[1]/span[1]/text()被复制到我的剪贴板。


这是我尝试过的代码:
from lxml import html
import requests

# get alert info
page = requests.get( 'https://www.msn.com/en-us/weather/weatheralerts/Beverly%20Hills,California,Unite%20d%20States/we-city?weadegreetype=F&day=1&ocid=ansmsnweather')
tree = html.fromstring(page.content)

alertInfo = tree.xpath( '//*[@id="main"]/div[1]/div/div/div[2]/p[1]/span[1]/text()')

print alertInfo



但是,我得到的输出是[]。我确信URL字符串是正确的。为什么会这样?

我还尝试alertInfo = tree.xpath( '//span/text()')看看是否可以在列表中选择元素,但即使这样也返回了一个空列表。

谢谢。


Tags: textimportdividtree元素列表get
1条回答
网友
1楼 · 发布于 2024-09-20 05:48:55
  1. 问题不在于xpath,而在于顽皮的msn回复脚本请求的方式。你可以试着欺骗它,就好像你是一个rel浏览器hence
  2. 如果你只看天气预报,我强烈建议不要解析html页面(这很容易受到页面结构变化的影响),有些服务有很好的API,比如acuweather或yahoo!天气

相关问题 更多 >