我被一个奇怪的分页问题困住了。我正在从https://cotthosting.com/NYRocklandExternal/LandRecords/protected/SrchQuickName.aspx抓取搜索结果
我有四个类别的搜索结果。在
1)没有搜索结果
2)有一个结果页面
3)结果页多于一页但少于12页
4)结果页超过12页。在
对于案例1,这很简单,我只是路过而已。在
results = driver.find_element_by_class_name('GridView')
if len(results)== 0:
pass
对于案例2和3,我检查包含元素中的链接列表是否至少是一个,然后单击它。在
^{pr2}$案例2和3的问题:我可以在这里检查什么作为我的对照?在
这些链接是到第2页、第3页等的href链接,但最棘手的是,如果我在当前页面上,比如说第1页,我如何确保我会转到第2页,当我在第2页时,如何确保我会转到第3页?结果列表第1页的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>
</tr>
</table>
我可以专门使用sub_tables[1]
在案例2中查看上面的bs4代码。在
问题是没有下一步按钮,我可以利用。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个值。i、 e.最接近当前页面的10个页面,...
链接到更多页面,Last
链接。所以如果我的结果是88页,我不知道该怎么办。在
我将一个转储链接到一个完整的示例页:https://ghostbin.com/paste/nrb27
点击“最后一页”获取他的号码,然后点击每个孩子。在
您应该做的是计算一个页面中的结果数,并使用总结果中的值除以来估计总页数。在
如果你检查一下这一页,你会看到:
Displaying records 1 - 500 of 32563 at 10:08 AM ET on 9/16/2016
了解页面的总数,启动导航并检查页面是否已加载(如果需要),并且知道当前页面,则可以根据页面为页面导航编号提供动态选择器,用于2种情况:
您不需要4个类别,因为: -您可以计算结果的数量以及在一个页面上可以显示多少个结果 -知道页数
或者转到最后一页并向后开始,直到第1页不是链接。在
首先你要知道你在哪一页。要实现这一目标:
使用xpath元素查找当前页:
然后提取数字:
^{pr2}$然后你可以做任何事情:转到下一页,在当前页码上加1,到最后一页读这个数字,等等
相关问题 更多 >
编程相关推荐