0
게시 요청을 사용하여 스크레이퍼를 생성합니다. 실행할 때 아무것도 얻지 않습니다. 내가 뭘 잘못하고 있는지 이해할 수 없어. 크롬 개발자 도구를 사용하여 양식 데이터 쿼리를 볼 때 콘솔에 전체 문자열을 붙여 넣은 경우 이상하게 보였으므로 그 이유를 간결하게 설명했습니다. 모든 제안은 매우 감사하겠습니다. formdata에 대한POST 요청을받은 스크래퍼가 결과를 가져 오지 않습니다.
import requests
from lxml import html
url = "http://www.golf.co.nz/PlayGolf/ClubDirectory.aspx"
def grab_data(address):
payload={"ctl00$MainContent$cbRegion":"All Regions","ctl00$MainContent$cbHoleOpt":"Any number of Holes"}
headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'}
response = requests.post(address, data=payload, headers = headers)
tree=html.fromstring(response.text)
names=tree.xpath("//td[@class='align-left']//h2/text()")
for name in names:
print(name)
grab_data(url)
요소 :
<div id="MainContent_pnlForm" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'MainContent_btnSearch')">
<div id="MainContent_pnlFilters">
<div>
<select name="ctl00$MainContent$cbRegion" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$cbRegion\',\'\')', 0)" id="MainContent_cbRegion" class="ddl-filter">
<option selected="selected" value="0">All Regions</option>
<option value="1">Aorangi Region</option>
<option value="2">Auckland Region</option>
<option value="3">Bay of Plenty Region</option>
<option value="5">Canterbury Region</option>
<option value="6">Hawkes Bay Region</option>
<option value="7">Manawatu/Wanganui Region</option>
<option value="10">North Harbour Region</option>
<option value="11">Northland Region</option>
<option value="12">Otago Region</option>
<option value="13">Poverty Bay/E. Coast Region</option>
<option value="14">Southland Region</option>
<option value="15">Taranaki Region</option>
<option value="9">Tasman Region</option>
<option value="16">Waikato Region</option>
<option value="17">Wellington Region</option>
</select>
<select name="ctl00$MainContent$cbHoleOpt" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$cbHoleOpt\',\'\')', 0)" id="MainContent_cbHoleOpt" class="ddl-filter">
<option selected="selected" value="0">Any number of Holes</option>
<option value="9">9 Holes</option>
<option value="18">18 Holes</option>
<option value="27">27 Holes</option>
<option value="36">36 Holes</option>
</select>
<input name="ctl00$MainContent$tbSearch" type="text" value="SEARCH" size="10" id="tbSearch">
<input type="submit" name="ctl00$MainContent$btnSearch" value="GO" id="MainContent_btnSearch" class="module-button-cta submit-filter">
</div>
</div>
</div>
이것은 구문 분석 후 얻을 수 있습니다. 여기에서 진행할 수 없습니다. >>> 트리 html.fromstring = (response.content) >>> 트리 >>> tree.text '\ R \ n' –