为什么我会从网络抓取中获得空列表?

时间:2019-07-10 15:32:26

标签: 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 \ t','\ n \ t \ t \ t \ t \ t \ t','\ n \ t \ t \ t \ t \ t \ t','\ n \ t \ t \ t \ t']

2 个答案:

答案 0 :(得分:3)

因为您要查找的文本数据显示在<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()')

答案 1 :(得分:2)

如果您查看该站点,则它们会提供一个API馈送的beta站点,因此您可以从该端点获取所有信息作为json

import requests

r = requests.get('https://api.weather.bom.gov.au/v1/locations/r1r0fs/observations').json()
print(r)

enter image description here

相关问题