如何在 href 包含 javascript:__doPostBack() 时对页码进行分页

How to paginate through the page numbers when href contains javascript:__doPostBack()

我正在尝试抓取此网站 http://www.mfa.gov.tr/sub.ar.mfa?dcabec54-44b3-4aaa-a725-70d0caa8a0ae 但是当我想转到下一页时,我不能,因为 link 没有改变 你会发现页面 link 就是那样

href="javascript:__doPostBack('sb$grd','Page')"

我有一个我试过的代码,但它只转到第 2 页,然后给了我一个错误:故事元素参考:元素未附加到页面文档

from selenium import webdriver
url = 'http://www.mfa.gov.tr/sub.ar.mfa?dcabec54-44b3-4aaa-a725-70d0caa8a0ae'
driver = webdriver.Chrome()
driver.get(url)
btn = [w for w in driver.find_elements_by_xpath('//*[@id="sb_grd"]/tbody/tr[26]/td/table/tbody/tr/td/a')]
for b in btn:
    driver.execute_script("arguments[0].click();", b)

可以看到木下对这个url提出了要求:http://www.mfa.gov.tr/default.fr.mfa 按 F12 并转到网络选项卡查看。

你需要的文章都在这个url的文档里,你不需要分页,分页只是为了展示。此分页没有请求,希望下载显示的图片。

要使用 href 属性对页码进行分页,如 "javascript:__doPostBack('sb$grd','Page')" 您需要为 [=13] 引入 WebDriverWait =] 并且您可以使用以下 :

  • 代码块:

    from selenium import webdriver
    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
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get("http://www.mfa.gov.tr/sub.ar.mfa?dcabec54-44b3-4aaa-a725-70d0caa8a0ae")
    while True:
        try:
            WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//table[@id='sb_grd']//table/tbody/tr//td/span//following::td[1]/a"))).click()
            print("Next page clicked")
        except TimeoutException:
            print("No more pages")
            break
    driver.quit()
    
  • 控制台输出:

    Next page clicked
    Next page clicked
    Next page clicked
    .
    .
    .
    No more pages
    

参考

您可以在以下位置找到相关的详细讨论: