【问题标题】:Can't grab all the pdf links within a table from a webpage无法从网页中获取表格中的所有 pdf 链接
【发布时间】:2018-12-22 23:42:11
【问题描述】:

我已经在 python 中结合 selenium 编写了一个脚本来抓取点击不同数字时生成的不同 pdf 链接,如110015710110015670 等位于网页的表格中。

Site link

我的脚本可以点击这些链接,显示 pdf 文件,但只解析其中的 5 个。

我怎样才能得到它们?

到目前为止我已经尝试过:

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

link = "replace_with_above_link"

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(link)

[driver.execute_script("arguments[0].click();",item) for item in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"tr.Iec")))]
for elem in wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,".IecAttachments li a[href$='.pdf']"))):
    print(elem.get_attribute("href"))
driver.quit() 

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping


    【解决方案1】:

    当您单击元素时,它将执行 XHR 请求 pdf 链接,每次单击后添加延迟。

    for item in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"tr.Iec"))):
        driver.execute_script("arguments[0].click();",item)
        time.sleep(1)
    

    【讨论】:

    • 在这种情况下是否可以使用显式等待而不是硬编码延迟@ewwink?
    • 是的,你可以等到元素 tr.IecExtended ul 找到,这个元素是 tr.Iec 的下一个兄弟
    猜你喜欢
    • 2013-02-23
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2014-01-30
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多