python - 为什么我从网络抓取中得到空列表?

标签 python xpath web-scraping lxml

我正在尝试从网站获取天气信息并收集这些数据。但有些请求会返回空列表或与预期不同的信息。为什么会发生这种情况,从网站获取正确的 xpath 和信息的正确格式和方法是什么。

我尝试过使用多个网站,但无法始终如一地获得结果。

import requests
from lxml import html

site1data = requests.get('http://m.bom.gov.au/vic/melbourne/', verify = 
False)
tree = html.fromstring(site1data.content)

humidity = tree.xpath('//div[@class="humidity"]/text()')

print(humidity)

预期的结果是这样的: 67% 但我得到了: ['\n\t\t\t\t\t', '\n\t\t\t\t\t', '\n\t\t\t\t\t', '\n\t\t\t\t']

最佳答案

因为您要查找的文本数据显示在 <p> 中标记,不在 <div> 内本身:

<div class="humidity">
    <h3>Humidity</h3>
    <img class="humidity" src="/assets/images/ui/humidity.svg" />
    <p>65%</p>
</div>

这个 xpath 应该可以解决您眼前的问题:

humidity = tree.xpath('//div[@class="humidity"]/p/text()')

关于python - 为什么我从网络抓取中得到空列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974088/

相关文章:

python - 在 python 中将 '[1,2,3,4]' 转换为 float 或整数

css - 无法从 xpath 获取值

java - Jsoup不解析表中的数据

python - BeautifulSoup 没有获取所有数据,仅获取部分数据

python - Scrapy 返回 unicode - 如何转换为字符串?

python - 设置对象有比较键吗?

python - 如何生成 n+1 长列表,用 0 填充?

python - 如果我们只有类(class)名称,请单击链接

mysql - 什么是 Xpath 注入(inject),使用 mysql 数据库的网站是否容易受到这种注入(inject)?

c# - 无法使用 HtmlAgilityPack 和 XPath 提取 <link> 元素