Python 2.7 为while循环分配最大尝试次数

Python 2.7 为while循环分配最大尝试次数,python-2.7,selenium,Python 2.7,Selenium,我上一次使用Stackoverflow的经历非常棒,我感谢所有帮助我的人。 我现在正试图在这个网站上的代码刮不同的网页 但是,当我试图点击下一页时,我有以下问题,我不知道如何通过它们 1) “下一页”按钮的Xpath会随着搜索结果总数的变化而变化。 例如,如果有5个页面,那么xpath是//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/div/ul/li[7]/a' 如果有10个,那么xpath是 //html/body/div[1]/

我上一次使用Stackoverflow的经历非常棒,我感谢所有帮助我的人。 我现在正试图在这个网站上的代码刮不同的网页

但是,当我试图点击下一页时,我有以下问题,我不知道如何通过它们

1) “下一页”按钮的Xpath会随着搜索结果总数的变化而变化。 例如,如果有5个页面,那么xpath是//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/div/ul/li[7]/a' 如果有10个,那么xpath是 //html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[12]/a'

我决定为那些有10页或10页以上的人创建两个不同的脚本,一个为少于10页的人创建一个脚本, 但是,即使这样做,我仍然无法使脚本停止,因为即使浏览器中禁用了“下一页”按钮,脚本仍会继续单击下一页。经过一定次数的尝试后,我不可能让脚本停止

谁能给我建议一个解决办法吗。 我只是粘贴用于浏览页面的代码,因为一旦python知道在哪里停止,提取数据就很容易了

提前谢谢,这是我的代码

import fileinput
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains
import lxml.html
import Tkinter, tkFileDialog
from collections import defaultdict
from selenium.common.exceptions import NoSuchElementException


path_to_chromedriver = 'chromedriver.exe'
browser = webdriver.Chrome(executable_path = path_to_chromedriver)
browser.get('http://targetstudy.com/school/schools-in-chhattisgarh.html')
time.sleep(3)

while ((browser.find_element_by_xpath('//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[11]/a').is_enabled()):
    browser.find_element_by_xpath('//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[11]/a').click()
    time.sleep(2)
    print 'something'
else:
    browser.close()

亲爱的用户,您可以在循环之间使用break语句,如下代码所示 尝试此代码并添加您的最大号码,希望对此有所帮助

counter = 0 while
((browser.find_element_by_xpath('//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[11]/a').is_enabled()):
browser.find_element_by_xpath('//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[11]/a').click()
     time.sleep(2)
     print 'something'
     counter = counter + 1
     if counter > "Your Maximum Number":
        break

else:
     browser.close()

亲爱的用户,您可以在循环之间使用break语句,如下代码所示 尝试此代码并添加您的最大号码,希望对此有所帮助

counter = 0 while
((browser.find_element_by_xpath('//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[11]/a').is_enabled()):
browser.find_element_by_xpath('//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[11]/a').click()
     time.sleep(2)
     print 'something'
     counter = counter + 1
     if counter > "Your Maximum Number":
        break

else:
     browser.close()

亲爱的用户,您可以在循环之间使用break语句,如下代码所示 尝试此代码并添加您的最大号码,希望对此有所帮助

counter = 0 while
((browser.find_element_by_xpath('//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[11]/a').is_enabled()):
browser.find_element_by_xpath('//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[11]/a').click()
     time.sleep(2)
     print 'something'
     counter = counter + 1
     if counter > "Your Maximum Number":
        break

else:
     browser.close()

亲爱的用户,您可以在循环之间使用break语句,如下代码所示 尝试此代码并添加您的最大号码,希望对此有所帮助

counter = 0 while
((browser.find_element_by_xpath('//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[11]/a').is_enabled()):
browser.find_element_by_xpath('//html/body/div[1]/div[7]/div[1]/div[1]/div[3]/div/div/ul/li[11]/a').click()
     time.sleep(2)
     print 'something'
     counter = counter + 1
     if counter > "Your Maximum Number":
        break

else:
     browser.close()

我认为这会奏效:

while browser.find_element_by_xpath("(//ul[@class='pagination']/li)[last()]").get_attribute("class") != "disabled":
    browser.find_element_by_xpath("(//ul[@class='pagination']/li/a)[last()]").click()
    time.sleep(2)
    print 'something'
else:
    browser.close()
其想法是:

  • 查找最后一个
    li
  • 测试查看该
    li的
    class=“disabled”
  • 如果不是,则单击最后一个
    li/a
    ,这是下一个页面链接

我认为这会奏效:

while browser.find_element_by_xpath("(//ul[@class='pagination']/li)[last()]").get_attribute("class") != "disabled":
    browser.find_element_by_xpath("(//ul[@class='pagination']/li/a)[last()]").click()
    time.sleep(2)
    print 'something'
else:
    browser.close()
其想法是:

  • 查找最后一个
    li
  • 测试查看该
    li的
    class=“disabled”
  • 如果不是,则单击最后一个
    li/a
    ,这是下一个页面链接

我认为这会奏效:

while browser.find_element_by_xpath("(//ul[@class='pagination']/li)[last()]").get_attribute("class") != "disabled":
    browser.find_element_by_xpath("(//ul[@class='pagination']/li/a)[last()]").click()
    time.sleep(2)
    print 'something'
else:
    browser.close()
其想法是:

  • 查找最后一个
    li
  • 测试查看该
    li的
    class=“disabled”
  • 如果不是,则单击最后一个
    li/a
    ,这是下一个页面链接

我认为这会奏效:

while browser.find_element_by_xpath("(//ul[@class='pagination']/li)[last()]").get_attribute("class") != "disabled":
    browser.find_element_by_xpath("(//ul[@class='pagination']/li/a)[last()]").click()
    time.sleep(2)
    print 'something'
else:
    browser.close()
其想法是:

  • 查找最后一个
    li
  • 测试查看该
    li的
    class=“disabled”
  • 如果不是,则单击最后一个
    li/a
    ,这是下一个页面链接