2014-03-06 10 views
5

이미 많은 좋은 리소스가 stackoverflow에 있지만 여전히 문제가 있습니다. 나는이 소스를 방문한 :파이썬, 스크랩 및 게시 웹 사이트 탐색

내가 http://www.latax.state.la.us/Menu_ParishTaxRolls/TaxRolls.aspx을 방문하여 교구를 선택하려고 시도하고있다. 나는이 게시물을 강제하고 내가 다시 게시하고 더 많은 선택을 허용 올해를 선택할 수 있습니다 믿습니다. 나는 위의 소스를 따라 스크립트를 작성하고 1 년을 입력 할 수 있도록 사이트를 성공적으로 제출하지 못했습니다.

나는 또한 쉘에서 이것을 시도했고 내가 입력 한 플러스 내가 (대량 줄이려고 수정) 내가

http://pastebin.com/KAW5VtXp을 어쨌든 찾을 수 있습니다받은 것을

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() 

내 현재 코드 교구 드롭 다운 목록의 값을 변경하고 웹 마스터 로그인 페이지로 이동하십시오.

올바른 방법으로 접근하고 있습니까? 모든 생각은 매우 도움이 될 것입니다.

감사합니다.

답변

3

나는 셀레늄을 사용하여 끝났다.

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()