이상한 페이지 매김을하고 있습니다. https://cotthosting.com/NYRocklandExternal/LandRecords/protected/SrchQuickName.aspx셀레늄으로 페이지 매김 탐색하기
검색 결과가 4 개 범주로 나뉩니다.
1) 더 검색 한 결과 페이지
3) 하나 이상의 결과 페이지 미만 12 결과 페이지
4
) 더있다가가 있습니다2) 검색 결과가 없습니다 있습니다 12 결과 페이지보다.
사례 1의 경우 간단합니다. 나는 그냥 지나가고 있습니다.
results = driver.find_element_by_class_name('GridView')
if len(results)== 0:
pass
사례 2와 3의 경우, 포함 요소의 링크 목록이 적어도 하나인지 확인한 다음 클릭하십시오.
else:
results_table = bsObj.find('table', {'class':'GridView'})
sub_tables = results_table.find_all('table')
next_page_links = sub_tables[1].find_all('a')
if len(next_page_links) == 0
scrapeResults()
else:
scrapeResults()
####GO TO NEXT PAGE UNTIL THERE IS NO NEXT PAGE
사례 2 및 3에 대한 질문 : 여기에서 내 제어로 확인할 수있는 것은 무엇입니까?
링크는 2 페이지, 3 페이지 등의 href입니다.하지만 현재 페이지에있는 경우 페이지 1과 같이 까다로운 부분은 페이지 2로 가고 페이지에있을 때 어떻게해야합니까? 2 어떻게 3 페이지로 갈 것인가? 특히 문제가되는
더 다음 버튼 없다 sub_tables[1]
이 경우 BS4 코드 위 참조하여
<table cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;">
<tr>
<td>Page: <span>1</span></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$2')">2</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$3')">3</a></td>
</tr>
</table>
I이 테이블에 제로 수를 다음과 같이 결과 목록 1 페이지의 HTML은 그 I 활용할 수 있습니다. html의 결과 페이지를 따라 변경되는 것은 없습니다. 링크 바로 앞에 span
에있는 번호 외에도 현재 페이지를 분리 할 수있는 것이 없습니다. 그리고 나는 그것이 경우 4의 마지막 페이지
에 도달 할 때 중지를 원하는, html로는 다음과 같습니다
<table cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;">
<tr>
<td>Page: <span>1</span></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$2')">2</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$3')">3</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$4')">4</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$5')">5</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$6')">6</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$7')">7</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$8')">8</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$9')">9</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$10')">10</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$11')">...</a></td>
<td><a href="javascript:__doPostBack('ctl00$cphMain$lrrgResults$cgvNamesDir','Page$Last')">Last</a></td>
</tr>
</table>
마지막 두 개의 링크가 더 많은 결과 페이지와 Last
있다는 것을 보여 ...
입니다 마지막 페이지를 나타냅니다. 그러나 '모든 페이지에 마지막 링크가 존재하며 마지막 페이지 자체에서만 활성 링크가 아닙니다.
케이스 4에 대한 질문, 어떻게 last
링크를 클릭 할 수 있는지 확인하고 이것을 나의 중지 지점으로 사용할 수 있습니까?
사례 4에 대한 질문이 커지면 다른 결과 페이지로 이동하려면 ...
어떻게해야합니까? 결과 페이지 목록은 최대 12 개의 값입니다. 즉, 현재 페이지에 가장 가까운 10 페이지, ...
더 많은 페이지로의 링크 및 Last
링크. 그래서 내 결과가 88 페이지라고한다면 어떻게해야할지 모르겠다. 내가
는 전체 샘플 페이지에 덤프를 사용하고 있습니다 : 모든 https://ghostbin.com/paste/nrb27
마지막 링크를 클릭하려고 했습니까? 그 후에 마지막 페이지 번호를 볼 수 있고 가지고있는 페이지의 수를 알 수 있습니다. 또한 페이지 번호를 클릭하지 않고 URL 만 사용하여 탐색 할 수 있는지 확인하십시오. 마지막으로 링크가 표시되어 있으므로 클릭 할 수 있어야합니다. => 마지막 페이지에 있어야하고 총 페이지 수를 찾아야합니다. – lauda
@lauda, 페이지 수 얻기에는 두 개의 조각이 있습니다. 결과 페이지가 1 개 이상 12 개 미만인 경우 'Last'는 없지만 len (next_page_links)는 페이지 수를 줄 것입니다. 페이지가 12보다 크다면, 예를 들어 마지막 페이지가'Last'이므로'next_page_links'의 마지막 요소에서 2를 사용하여 숫자를 얻을 수 있습니다. 따라서이 next_page_links [-2] .get_text()는 숫자를 반환합니다. 그러나 검색을 수행하기 전에 페이지가 12 개가 될지 12 개가 될지를 결정할 수 없습니다.하지만 '...'의 존재를 검색 할 수는 있습니다. 모든 링크를 반복하는 것은 어려운 일입니다. 예 : 15 결과 페이지 –