почему я получаю пустые списки, возвращаемые из веб-поиска? - PullRequest
1 голос
/ 10 июля 2019

Я пытаюсь узнать погоду на сайте и собрать эти данные. но некоторые запросы возвращают пустые списки или другую информацию, чем ожидалось. почему это происходит и каков правильный формат и метод получения правильного пути и информации с веб-сайта.

Я пытался использовать несколько веб-сайтов, но не могу получить постоянные результаты.

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 \ т \ т \ т \ т ']

Ответы [ 2 ]

3 голосов
/ 10 июля 2019

Поскольку текстовые данные, которые вы ищете, представлены внутри тега <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()')
2 голосов
/ 10 июля 2019

Если вы заглянете на сайт, он предлагает бета-сайт с API-интерфейсом, чтобы вы могли получить всю информацию с этой конечной точки в виде json

import requests

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

enter image description here

...