Python 为什么我会从网页抓取中得到返回的空列表?
我试图从一个网站上获取天气信息并收集这些数据。但有些请求返回空列表或与预期不同的信息。为什么会发生这种情况?从网站获取正确xpath和信息的正确格式和方法是什么 我曾尝试使用多个网站,但无法始终获得结果Python 为什么我会从网页抓取中得到返回的空列表?,python,xpath,web-scraping,lxml,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(site1d
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']因为您要查找的文本数据显示在
标记中,而不是本身中:
<div class="humidity">
<h3>Humidity</h3>
<img class="humidity" src="/assets/images/ui/humidity.svg" />
<p>65%</p>
</div>
因为您要查找的文本数据显示在
标记中,而不是
本身中:
<div class="humidity">
<h3>Humidity</h3>
<img class="humidity" src="/assets/images/ui/humidity.svg" />
<p>65%</p>
</div>
如果您查看该站点,他们提供了一个测试站点,该站点由API提供,因此您可以通过json从该端点获取所有信息
import requests
r = requests.get('https://api.weather.bom.gov.au/v1/locations/r1r0fs/observations').json()
print(r)
如果您查看该站点,他们会提供一个测试版站点,该站点由API提供,因此您可以从该端点获取json格式的所有信息
import requests
r = requests.get('https://api.weather.bom.gov.au/v1/locations/r1r0fs/observations').json()
print(r)
其中有内部标记//div[@class=“湿度”]/p/text()
。要获取所有文本节点,请使用://div[@class=“湿度”]/*/text()
其中有内部标记//div[@class=“湿度”]/p/text()
。要获取所有文本节点,请使用://div[@class=“湿度”]/*/text()
,这是否意味着我必须在路径的末尾包含标记,才能到达网站中更具体的点?@BOBTHEBUILDER通常是这样。您可以使用XPath来导航文档的“骨骼”——DOM。这是一种允许精确刮削的工具。W3C对xpath有一个简单的定义。但也看看QHarr的答案。API现在非常常见,熟悉它们的使用非常有用。那么这是否意味着我必须在路径的末尾添加标记,才能将其带到网站中更具体的点?@BOBTHEBUILDER通常是这样。您可以使用XPath来导航文档的“骨骼”——DOM。这是一种允许精确刮削的工具。W3C对xpath有一个简单的定义。但也看看QHarr的答案。API现在很常见,熟悉它们的使用是很有用的。