BeautifulSoup возвращает данные, не записанные при получении таблицы из Интернета - PullRequest
0 голосов
/ 18 сентября 2018

Новое в просмотре веб-страниц.

Мне нужно получить данные таблицы ежедневных наблюдений (длинная таблица в конце страницы) со страницы:

https://www.wunderground.com/history/daily/us/tx/greenville/KGVT/date/2015-01-05?cm_ven=localwx_history

HTML-код таблицы начинается с <table _ngcontent-c16="" class="tablesaw-sortable" id="history-observation-table">

Мой код:

url = "https://www.wunderground.com/history/daily/us/tx/greenville/KGVT/date/2015-01-05?cm_ven=localwx_history"
html = urlopen(url)
soup = BeautifulSoup(html,'lxml')
soup.findAll(class_="region-content-observation")

И вывод:

[<div class="region-content-observation">
 <city-history-observation _nghost-c34=""><div _ngcontent-c34="">
 <div _ngcontent-c34="" class="observation-title">Daily Observations</div>
 <!-- -->
     No Data Recorded

   <!-- -->
 </div></city-history-observation>
 </div>]

Таким образом, он не получает таблицу и возвращает данные не записаны, но он получил название.

И когда я попытался

soup.findAll(class_="tablesaw-sortable")

или

soup.findAll('tr')

он только возвращал пустой список.

Кто-нибудь знает, где что-то пошло не так?

1 Ответ

0 голосов
/ 18 сентября 2018

Если вы откроете веб-страницу в Firefox, вы можете использовать вкладку Сеть из ее Инструменты разработчика , чтобы просмотреть все различные загруженные веб-ресурсы.Интересующие вас данные на самом деле предоставляются этим JSON-файлом , который можно извлечь и затем проанализировать с помощью библиотеки json Python.

Примечание: I 'Я никогда не проверял сайт, который использует ключи API, поэтому я не уверен насчет этики или лучших практик в этой ситуации.В качестве теста я смог загрузить файл JSON без проблем.Однако я подозреваю, что Weather Underground не захочет, чтобы вы использовали их ключ слишком часто - и похоже, что они больше не предоставляют бесплатные ключи API погоды .

...