Красивый суп не может найти этот HTML - PullRequest
3 голосов
/ 24 апреля 2019

Python3 - Beautiful Soup 4

Я пытаюсь разобрать график погоды с веб-сайта: https://www.wunderground.com/forecast/us/ny/new-york-city

Но когда я беру html графика погоды, но красивый суп кажетсявозьмите все вокруг.

Я новичок в Beautiful Soup.Я думаю, что это не в состоянии захватить это, потому что либо он не может проанализировать то, что у них происходит, либо потому, что javascript, который заполняет график, не загружен или не может быть проанализирован BS (по крайней мере, так, как яиспользуя его).

Что касается моего кода, он чрезвычайно прост

import requests, bs4
url = 'https://www.wunderground.com/forecast/us/ny/new-york-city'
requrl = requests.get(url, headers={'user-agent': 'Mozilla/5.0'})
requrl.raise_for_status()
bs = bs4.BeautifulSoup(requrl.text, features="html.parser")
a = str(bs)
x = 'weather-graph'
print(a[a.find('x'):])
#Also tried a.find('weather-graph') which returns -1

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

Я пытался сделать x много разных частей html внутри и вокруг графика, но не получил ничего существенного.

1 Ответ

1 голос
/ 24 апреля 2019

Существует API, который вы можете использовать.То же, что и на странице.Не знаю, истек ли срок действия ключа.Возможно, вам понадобится упорядочить вывод, но вы можете сделать это по полю даты и времени

import requests
r = requests.get('https://api.weather.com/v1/geocode/40.765/-73.981/forecast/hourly/240hour.json?apiKey=6532d6454b8aa370768e63d6ba5a832e&units=e').json()
for i in r['forecasts']:
    print(i)

Если не уверены, я с удовольствием обновлю вас, чтобы показать вам, как построить фрейм данных и порядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...