una tutorial script scraping pagina medium extraer datos python web-scraping urllib2 mechanize

script - web scraping python beautifulsoup tutorial



Navegando por un sitio web en python, raspado y publicaciĆ³n (1)

Ya hay muchos recursos buenos en stackoverflow, pero todavía tengo problemas. He visitado estas fuentes:

Estoy intentando visitar http://www.latax.state.la.us/Menu_ParishTaxRolls/TaxRolls.aspx y seleccionar una Parroquia. Creo que esto fuerza una publicación y me permite seleccionar un año, que se publica nuevamente, y permite aún más selección. He escrito mi guión de diferentes maneras siguiendo las fuentes anteriores y no he podido enviar el sitio para permitirme ingresar un año.

Mi código actual

import urllib from bs4 import BeautifulSoup import mechanize headers = [ (''Accept'',''text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8''), (''Origin'', ''http://www.indiapost.gov.in''), (''User-Agent'', ''Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17''), (''Content-Type'', ''application/x-www-form-urlencoded''), (''Referer'', ''http://www.latax.state.la.us/Menu_ParishTaxRolls/TaxRolls.aspx''), (''Accept-Encoding'', ''gzip,deflate,sdch''), (''Accept-Language'', ''en-US,en;q=0.8''), ] br = mechanize.Browser() br.addheaders = headers url = ''http://www.latax.state.la.us/Menu_ParishTaxRolls/TaxRolls.aspx'' response = br.open(url) # first HTTP request without form data soup = BeautifulSoup(response) # parse and retrieve two vital form values viewstate = soup.findAll("input", {"type": "hidden", "name": "__VIEWSTATE"}) eventvalidation = soup.findAll("input", {"type": "hidden", "name": "__EVENTVALIDATION"}) formData = ( (''__EVENTVALIDATION'', eventvalidation[0][''value'']), (''__VIEWSTATE'', viewstate[0][''value'']), (''__VIEWSTATEENCRYPTED'',''''), ) try: fout = open(''C://GIS//tmp.htm'', ''w'') except: print(''Could not open output file/n'') fout.writelines(response.readlines()) fout.close()

También intenté esto en el shell y lo que ingresé más lo que recibí (modificado para reducir el volumen) se puede encontrar en http://pastebin.com/KAW5VtXp

De todos modos, trato de cambiar el valor en la lista desplegable de Parish y publicar Me llevan a la página de inicio de sesión de un webmaster.

¿Me estoy acercando a esto de la manera correcta? Cualquier pensamiento sería extremadamente útil.

¡Gracias!


Terminé usando selenio.

from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("http://www.latax.state.la.us/Menu_ParishTaxRolls/TaxRolls.aspx") elem = driver.find_element_by_name("ctl00$ContentPlaceHolderMain$ddParish") elem.send_keys("TERREBONNE PARISH") elem.send_keys(Keys.RETURN) elem = driver.find_element_by_name("ctl00$ContentPlaceHolderMain$ddYear") elem.send_keys("2013") elem.send_keys(Keys.RETURN) elem = driver.find_element_by_id("ctl00_ContentPlaceHolderMain_rbSearchField_1") elem.click() APN = ''APN # here'' elem = driver.find_element_by_name("ctl00$ContentPlaceHolderMain$txtSearch") elem.send_keys(APN) elem.send_keys(Keys.RETURN) # Access the PDF elem = driver.find_element_by_link_text(''Generate Report'') elem.click() elements = driver.find_elements_by_tag_name(''a'') elements[1].click()