ページネーションの奇妙なケースに悩まされています。 https://cotthosting.com/NYRocklandExternal/LandRecords/protected/SrchQuickName.aspxセレンを使用したページ区切りの移動
検索結果は4つのカテゴリに分類されます。
1)何の検索は1つの結果ページ
3)以上の結果ページ未満12結果ページ )以上ありますがありますあり
2)結果はありませんがあります12の結果ページより。
ケース1の場合は、簡単ですが、私はちょうど通過しています。例2及び3については
results = driver.find_element_by_class_name('GridView')
if len(results)== 0:
pass
、私が含む要素内のリンクのリストは、少なくとも1であるかどうかをチェックし、それをクリックしています。
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ページなどの階層になりますが、私が現在のページ、たとえば1ページにいる場合は、2ページ目になることを確認してください2どうすれば3ページに行くのを確認できますか?
<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>
を次のように結果リストの1ページのHTMLである私は、具体的にsub_tables[1]
を使用して、この表にゼロという問題がそのI何次のボタンが存在しない場合にBS4コード上に2
参照利用することができます。 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>
最後の2つのリンクがより多くの結果ページとLast
があることを示すために...
です最後のページを示します。しかし、 `最後のリンクはすべてのページに存在し、最後のページにはアクティブなリンクではないだけです。
質問4の場合、last
リンクがクリック可能かどうかを確認して、これを停止ポイントとして使用できますか?
ケース4の大きな質問ですが、私はどのようにして...
の検索結果ページを表示しますか?結果ページのリストは最大12個の値です。現在のページに最も近い10ページ、...
、さらにページへのリンク、およびLast
リンクが含まれます。だから私の結果が88ページと言うなら、何をすべきかわからない。
私は、完全なサンプル・ページへのダンプをリンクしています:あなたはである何ページを知っている必要があり、すべてのhttps://ghostbin.com/paste/nrb27
[最後のリンク]をクリックしようとしましたか?それ以降の最後のページ番号が表示され、いくつのページがあるか分かります。また、ページ番号をクリックせずにURLのみを使用してナビゲートできるかどうかを確認します。私は最後にリンクがあるので、クリックすることができるはずです=>最後のページにあり、ページの総数を見つける必要があります。 – lauda
@lauda、ページ数を取得するには2つの部分があります。結果ページが1ページ以上12ページ未満の場合、 'Last'はありませんが、' len(next_page_links) 'は私にページ数を与えます。ページが12より大きい場合、最後のものが 'Last'であるので、' next_page_links'の最後の要素から2ndを使って数値を得ることができます。したがって、このnext_page_links [-2] .get_text()は数値を返します。しかし、私が検索を行う前に、ページが12ページより多いか少ないかを判断することはできません。しかし、私は「...」の存在を検索することができます。すべてのリンクを反復することが課題です。例えば15の結果ページ –