python可以用来写导航吗_在python中使用selenium进行导航

听着,我知道你是想从我的answer计算你之前的一个问题的总页数。在上一个案例中,由于我们可以直接获得最后一个页码,所以它起作用了,但这里不是这样。在

虽然页数不直接可用,但总的条目数是-

N4URG.png

现在,正如你在上面7月份的截图中看到的,这个数字是174。假设将分页长度(一页中的条目数)设为默认值10,那么页数应该是18(17页,每页10条,其余4条额外加一页)。在

计算页数应该是简单的逻辑。如果您在total_entries变量中得到了这个总条目数,那么页数应该是(取自this:number_of_pages = (total_entries/10) + 1

Python默认情况下按除法运算符返回下界整数,因此174/10将返回17,添加{}将返回{}。这就是-18页的页数。在

现在,提取条目的总数。您可以使用下面的定位器来找到包含它的元素。在

^{pr2}$

但是这个元素包含这样的文本-Showing 1-10 of 174。整个字符串中只需要174部分。为此,首先提取“of”后面的字符串,然后将其转换为int

从文本中以int形式提取条目总数的算法:showing_text = driver.find_element_by_xpath("//span[@class='showing']").text #Showing 1-10 of 174

number_of_entries_text = showing_text.split("of",1)[1] # 174 as text

number_of_entries = int( re.findall(r'\d+',number_of_entries_text)[0]) #174 as int

number_of_pages = (number_of_entries/10) + 1 #18

最终代码:def pagination( driver ):

data = []

last_element = driver.find_element_by_xpath("//span[@class='showing']")

if last_element is None:

number_of_pages = 1

else:

showing_text = driver.find_element_by_xpath("//span[@class='showing']").text number_of_entries_text = showing_text.split("of",1)[1]

number_of_entries = int( re.findall(r'\d+',number_of_entries_text)[0])

number_of_pages = (number_of_entries/10) +1

for i in range(number_of_pages - 1):

driver.find_element_by_xpath('//a[ contains( concat( " ", normalize-space( @class ), " "), " next ") ]').click()

time.sleep(1)

注意:

我认为我的解决方案更好,因为您不必反复检查任何元素是否可用或捕捉任何异常。你只需直接得到页数,然后点击下一步按钮很多次。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值