Очистка веб-страницы Java - PullRequest
0 голосов
/ 19 февраля 2019

Я нашел и прочитал довольно много статей о соскобах, но я как-то перегружен новичком.Я хочу получить данные из таблицы (https://www.senamhi.gob.pe/mapas/mapa-estaciones/_dat_esta_tipo.php?estaciones=472CA750)

Я пробовал с Beautifulsoup и могу получить список доступных option_tags (см. Параметры в объекте супа).

Теперь я беспокоюсьс получением фактического контента / как получить доступ к каждой дате / опции таблицы и сохранить, например, в pandas df.

Любые советы, с чего начать?

Вот мой код, чтобы получить варианты:

from bs4 import BeautifulSoup
import requests
resp = requests.get("https://www.senamhi.gob.pe/mapas/mapa-estaciones/_dat_esta_tipo.php?estaciones=472CA750")

html = resp.content 
soup = BeautifulSoup(html)

option_tags = soup.find_all("option")

1 Ответ

0 голосов
/ 19 февраля 2019

Когда я смотрю ваш заданный URL-адрес, я думаю, что таблица встраивается веб-сайт, который предоставляется:

 <iframe src="_dat_esta_tipo02.php?estaciones=472CA750&tipo=SUT&CBOFiltro=201902&t_e=M" name="contenedor" width="600" marginwidth="0" height="560" marginheight="0" scrolling="NO" align="center"  frameborder="0" id="interior"></iframe>

Когда вы нажимаете src https://www.senamhi.gob.pe/mapas/mapa-estaciones/_dat_esta_tipo.php?estaciones=472CA750 страница открываетсяи показывает ту же таблицу, чтобы вы могли намылить эту страницу.Я пробую это для вас. Он дал истинный результат

** Весь код: **

from bs4 import BeautifulSoup
import requests
resp = requests.get("https://www.senamhi.gob.pe/mapas/mapa- 
estaciones/_dat_esta_tipo02.php? 
estaciones=472CA750&tipo=SUT&CBOFiltro=201902&t_e=M")

html = resp.content
soup = BeautifulSoup(html,"lxml") ## Add lxml  or html.parser in this line

option_tags = soup.find_all("tr" , attrs={'aling' : 'center'})

for a in option_tags:
    print a.find('div').text

ВЫХОД:

Día/mes/año
Prom
01-02-2019
02-02-2019
03-02-2019
04-02-2019
05-02-2019
06-02-2019
07-02-2019
08-02-2019
09-02-2019
10-02-2019
11-02-2019
12-02-2019
13-02-2019
14-02-2019
15-02-2019
16-02-2019
17-02-2019
18-02-2019

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

array = []
for a in option_tags:
    array.append(a.text.split())

print array
...