python beautifulsoup extract extraction

python beautifulsoup extrayendo texto



extract extraction (2)

Asegúrese de entender lo que está sucediendo aquí:

import urllib2 import datetime from bs4 import BeautifulSoup as soup url = "http://app2.nea.gov.sg/anti-pollution-radiation-protection/air-pollution/psi/psi-readings-over-the-last-24-hours" web_soup = soup(urllib2.urlopen(url)) table = web_soup.find(name="div", attrs={''class'': ''c1''}).find_all(name="div")[2].find_all(''table'')[0] data = {} bold_time = '''' cur_time = datetime.datetime.strptime("12AM", "%I%p") for tr_index, tr in enumerate(table.find_all(''tr'')): if ''Time'' in tr.text: continue for td_index, td in enumerate(tr.find_all(''td'')): if not td_index: continue data[cur_time] = td.text.strip() if td.find(''strong''): bold_time = cur_time cur_time += datetime.timedelta(hours=1) print data.get(bold_time) # bold print data.get(bold_time - datetime.timedelta(hours=1)) # before bold print data.get(bold_time - datetime.timedelta(hours=2)) # before before bold

Esto imprimirá el valor de 3-hr PSI que está marcado en negrita y dos valores antes (si existe).

Espero que ayude.

Me gustaría extraer el texto en negrita , que indica el último clima psi de este sitio web http://app2.nea.gov.sg/anti-pollution-radiation-protection/air-pollution/psi/psi-readings-over -las-últimas-24 horas . ¿Alguien sabe cómo extraer usando este código a continuación?

También necesitaba extraer dos valores que están delante del clima actual psi para calcular. Total de tres valores (últimos y dos valores anteriores)

Ejemplo: el valor actual ( negrita ) es 5AM: 51, también necesito 3AM y 4AM. ¿Alguien sabe y puede ayudarme con esto? Gracias por adelantado !

from pprint import pprint import urllib2 from bs4 import BeautifulSoup as soup url = "http://app2.nea.gov.sg/anti-pollution-radiation-protection/air-pollution/psi/psi-readings-over-the-last-24-hours" web_soup = soup(urllib2.urlopen(url)) table = web_soup.find(name="div", attrs={''class'': ''c1''}).find_all(name="div")[2].find_all(''table'')[0] table_rows = [] for row in table.find_all(''tr''): table_rows.append([td.text.strip() for td in row.find_all(''td'')]) data = {} for tr_index, tr in enumerate(table_rows): if tr_index % 2 == 0: for td_index, td in enumerate(tr): data[td] = table_rows[tr_index + 1][td_index] pprint(data)

huellas dactilares:

{''10AM'': ''49'', ''10PM'': ''-'', ''11AM'': ''52'', ''11PM'': ''-'', ''12AM'': ''76'', ''12PM'': ''54'', ''1AM'': ''70'', ''1PM'': ''59'', ''2AM'': ''64'', ''2PM'': ''65'', ''3AM'': ''59'', ''3PM'': ''72'', ''4AM'': ''54'', ''4PM'': ''79'', ''5AM'': ''51'', ''5PM'': ''82'', ''6AM'': ''48'', ''6PM'': ''79'', ''7AM'': ''47'', ''7PM'': ''-'', ''8AM'': ''47'', ''8PM'': ''-'', ''9AM'': ''47'', ''9PM'': ''-'', ''Time'': ''3-hr PSI''}


Este código (ver líneas con #changed texto #changed )

from pprint import pprint import urllib2 from bs4 import BeautifulSoup as soup url = "http://app2.nea.gov.sg/anti-pollution-radiation-protection/air-pollution/psi/psi-readings-over-the-last-24-hours" web_soup = soup(urllib2.urlopen(url)) table = web_soup.find(name="div", attrs={''class'': ''c1''}).find_all(name="div")[2].find_all(''table'')[0] table_rows = [] for row in table.find_all(''tr''): table_rows.append([td.text.strip() for td in row.find_all(''td'')]) data = [] # changed for tr_index, tr in enumerate(table_rows): if tr_index % 2 == 0: for td_index, td in enumerate(tr): data.append([td, table_rows[tr_index + 1][td_index]]) # changed pprint(data)

darte

[[u''Time'', u''3-hr PSI''], [u''12AM'', u''57''], [u''1AM'', u''-''], [u''2AM'', u''-''], [u''3AM'', u''-''], [u''4AM'', u''-''], [u''5AM'', u''-''], [u''6AM'', u''-''], [u''7AM'', u''-''], [u''8AM'', u''-''], [u''9AM'', u''-''], [u''10AM'', u''-''], [u''11AM'', u''-''], [u''Time'', u''3-hr PSI''], [u''12PM'', u''-''], [u''1PM'', u''-''], [u''2PM'', u''-''], [u''3PM'', u''-''], [u''4PM'', u''-''], [u''5PM'', u''-''], [u''6PM'', u''-''], [u''7PM'', u''-''], [u''8PM'', u''-''], [u''9PM'', u''-''], [u''10PM'', u''-''], [u''11PM'', u''-'']]

e print data[4:7] te dan

[[u''3AM'', u''-''], [u''4AM'', u''-''], [u''5AM'', u''-'']]