Python XPath返回空列表?

时间:2017-07-08 23:03:04

标签: python html python-2.7 xpath

我正试图从this webpage抓取信息。
如果网页不起作用,则为screenshot

我正在尝试在第一个<span>元素中打印文本。

我复制了Google Chrome中Inspect Element视图提供的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()')看看我是否可以选择列表中的元素,但即使这样也返回了一个空列表。

感谢。

1 个答案:

答案 0 :(得分:1)

  1. 问题不在于您的xpath,而在于顽皮的msn回复脚本请求的方式。您可以尝试欺骗它,就好像您是一个rel浏览器hence
  2. 如果您所看到的只是天气报告,我强烈建议您远离解析HTML页面(这非常容易受到页面结构更改),某些服务有很好的API,例如accuweather或yahoo!天气