如何通过Selenium和Python转到下一页

时间:2018-12-28 09:04:47

标签: python python-3.x selenium screen-scraping webdriverwait

我是python的初学者,我正在尝试通过实验自己来学习代码...因为阅读不是我的“事情”之一

我正在尝试为特定站点构建代理刮板,但是我无法移至下一页。

这是我正在使用的代码,最后两行是我试图单击“下一页”的最后一件事(基本上只是向右箭头)

如果您回答了我的问题,请向我解释一下您所使用的内容(如果可以,请给我建议一下有关这种编码的好教程)

提前谢谢!(对不起,我的英语语法不是我的主要语言)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

options = Options()
#options.headless = True     #for headless
#options.add_argument('--disable-gpu') #for headless and os win

driver = webdriver.Chrome(options=options)

driver.get("https://hidemyna.me/en/proxy-list/")
time.sleep(10) #bypass cloudflare


tbody = driver.find_element_by_tag_name("tbody")
cell = tbody.find_elements_by_tag_name("tr")

for column in cell:
    column = column.text.split(" ")
    print (column[0]+":"+ column[1]) #ip and port

nxt = driver.find_element_by_class_name('arrow_right')
nxt.click()

3 个答案:

答案 0 :(得分:2)

要转到下一页,您可以尝试以下解决方案:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException, WebDriverException
    
    options = Options()
    options.add_argument("start-maximized")
    options.add_argument("disable-infobars")
    options.add_argument("--disable-extensions")
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get('https://hidemyna.me/en/proxy-list/')
    while True:
        try:
            driver.execute_script("return arguments[0].scrollIntoView(true);", WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='arrow__right']/a"))))
            driver.find_element_by_xpath("//li[@class='arrow__right']/a").click()
            print("Navigating to Next Page")
        except (TimeoutException, WebDriverException) as e:
            print("Last page reached")
            break
    driver.quit()
    
  • 控制台输出:

    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    Navigating to Next Page
    .
    .
    .
    Navigating to Next Page
    Last page reached
    

答案 1 :(得分:1)

您实际上并没有单击锚点<a>标记。要导航到下一页,您需要在click链接上<a>

您可以如下使用find_element_by_xpath

driver.find_element_by_xpath('//*[@id="content-section"]/section[1]/div/div[4]/ul/li[1]/a').click()

您可以使用另一个@Andersson所建议的css选择器来代替xpath。

答案 2 :(得分:0)

下一个按钮往往因网页而异...您将不得不检查该按钮并使用xpath或beaufifulsoup对其进行寻址

通常有“下一页”和“上一页” ...将您的xpath指向“下一页”