1

https://www.searchiqs.com/nybro/ 사이트를 긁어 모으려고합니다. 검색 양식으로 이동하려면 "손님으로 로그인"을 클릭해야합니다. "Andrew 결과에 페이지 매기기가 포함되어 있으며 요청 유형이 POST이므로 URL이 변경되지 않고 세션이 매우 빨리 시간 초과됩니다. 따라서 10 분을 기다렸다가 검색 URL 페이지를 새로 고치면 시간 초과 오류가 발생합니다파이썬으로 aspx 페이지를 긁는 방법

최근에 긁어 모으기 시작 했으므로 대부분 URL을 해독 할 수있는 GET 게시물을 작성했습니다. 이제까지 DOM을 살펴 봐야한다는 것을 알게되었습니다. Chrome 도구를 사용하여 헤더를 발견했습니다. 네트워크 탭에서 검색 페이지에서 결과 p로 전달되는 양식 데이터로 다음을 찾아 냈습니다. 나이

__EVENTTARGET: 
__EVENTARGUMENT: 
__LASTFOCUS: 
__VIEWSTATE:/wEPaA8FDzhkM2IyZjUwNzg...(i have truncated this for length) 
__VIEWSTATEGENERATOR:F92D01D0 
__EVENTVALIDATION:/wEdAJ8BsTLFDUkTVU3pxZz92BxwMddqUSAXqb... (i have truncated this for length) 
BrowserWidth:1243 
BrowserHeight:705 
ctl00$ContentPlaceHolder1$scrollPos:0 
ctl00$ContentPlaceHolder1$txtName:david 
ctl00$ContentPlaceHolder1$chkIgnorePartyType:on 
ctl00$ContentPlaceHolder1$txtFromDate: 
ctl00$ContentPlaceHolder1$txtThruDate: 
ctl00$ContentPlaceHolder1$cboDocGroup:(ALL) 
ctl00$ContentPlaceHolder1$cboDocType:(ALL) 
ctl00$ContentPlaceHolder1$cboTown:(ALL) 
ctl00$ContentPlaceHolder1$txtPinNum: 
ctl00$ContentPlaceHolder1$txtBook: 
ctl00$ContentPlaceHolder1$txtPage: 
ctl00$ContentPlaceHolder1$txtUDFNum: 
ctl00$ContentPlaceHolder1$txtCaseNum: 
ctl00$ContentPlaceHolder1$cmdSearch:Search 

대문자로 된 모든 것들이 숨겨져 있습니다. 또한 결과 구조를 파악할 수있었습니다.

내 스크립트는 내가 다음에 무엇을 해야할지에 대해 완전히 공백 상태이므로 실제로 애처 롭다. 나는 여전히 양식 제출을하고, 페이지 매김을 분석하고 결과를 긁어 낸다. 그러나 어떻게 진행해야할지 전혀 모른다.

import re 
import urlparse 
import mechanize 

from bs4 import BeautifulSoup 

class DocumentFinderScraper(object): 
    def __init__(self): 
     self.url = "https://www.searchiqs.com/nybro/SearchResultsMP.aspx" 
     self.br = mechanize.Browser() 
     self.br.addheaders = [('User-agent', 
           'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7')] 

##TO DO 

    ##submit form 

    #get return URL 

    #scrape results 

    #analyze pagination 


if __name__ == '__main__': 
    scraper = DocumentFinderScraper() 
    scraper.scrape() 

어떤 도움이 될 것이다 사랑스러운

+0

POST를 보내거나 대신에 정말 양식을 제출의 GET하는 것이 더 쉽습니다. 페이지가 보이지 않을 때까지 다음 단추를 찾아 클릭하여 페이지 매김을 수행 할 수 있습니다. –

+0

http://stackoverflow.com/questions/37393171/how-to-scrap-images-from-a-aspx-page/37401048#37401048 –

+0

파이썬 스크립트에 이것을 추가 할 수도 있습니다 :'logger = logging .getLogger ("mechanize") logger.addHandler (logging.StreamHandler (sys.stdout)) logger.setLevel (logging.INFO)'. 그것은 디버깅 섹션에서 발견 : http://wwwsearch.sourceforge.net/mechanize/ ... (그것은 3 라인, 그건 그렇고 - 코멘트에서 제대로 서식을 지정할 수 없습니다). – Zeth

답변

2

I 장애인 자바 스크립트를 평가하고 https://www.searchiqs.com/nybro/을 방문 형태는 다음과 같습니다

enter image description here

당신이 및 에서 로그를 볼 수 있듯이 게스트로 로그인 버튼을 사용할 수 없습니다. 이로 인해 Mechanize가 Javascript를 처리 할 수 ​​없으며 양식을 제출할 수 없으므로 Mechanize가 작동하지 않게됩니다.

이런 종류의 문제에 대해 Selenium을 사용하면 Mechanize보다 느린 단점이있는 전체 브라우저를 시뮬레이션 할 수 있습니다.

이 코드는 셀레늄을 사용으로 로그인해야합니다

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

usr = "" 
pwd = "" 

driver = webdriver.Firefox() 
driver.get("https://www.searchiqs.com/nybro/") 
assert "IQS" in driver.title 
elem = driver.find_element_by_id("txtUserID") 
elem.send_keys(usr) 
elem = driver.find_element_by_id("txtPassword") 
elem.send_keys(pwd) 
elem.send_keys(Keys.RETURN)