代码之家  ›  专栏  ›  技术社区  ›  Til Hund

使用python3.7从列表中的url下载pdfs

  •  0
  • Til Hund  · 技术社区  · 6 年前

    我有一个python脚本,它从 website 使用Selenium并将它们存储在一个列表中,然后我想用wget模块下载它们。

    这是代码的相关部分,其中脚本完成从网站获取的部分URL:

    new_links = []
    for link in list_of_links: # trim links
        current_strings = link.split("/consultas/coleccion/window.open('")
        current_strings[1] = current_strings[1].split("');return")[0]
        new_link = current_strings[0] + current_strings[1]
        new_links.append(new_link)
    
    for new_link in new_links:
        wget.download(new_link)
    

    脚本此时不做任何操作。它从不下载任何PDF,不会发出任何错误消息。

    在第二个for循环中我做错了什么?

    编辑:

    至于是否 new_links 是空的。不是这样。

    print(*new_links, sep = '\n')
    

    给我这样的链接(这里只有四个):

    http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=vPjrUnz0wbA%3D
    http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=dsyx6l1Fbig%3D
    http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=Cb64W7EHlD8%3D
    http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=A4TKEG9x4F8%3D
    

    编辑2:

    部分URL看起来像 /consultas/util/pdf.php?type=rdd&rdd=vPjrUnz0wbA%3D

    然后在它前面添加“基URL” http://digesto.asamblea.gob.ni .

    这是代码的相关部分,它就在上面的代码之前,在这里收集部分URL:

    list_of_links = []    # will hold the scraped links
    tld = 'http://digesto.asamblea.gob.ni'
    current_url = driver.current_url   # for any links not starting with /
    table_id = driver.find_element(By.ID, 'tableDocCollection')
    rows = table_id.find_elements_by_css_selector("tbody tr") # get all table rows
    for row in rows:
        row.find_element_by_css_selector('button').click()
        link = row.find_element_by_css_selector('li a[onclick*=pdf]').get_attribute("onclick") # get partial link
        if link.startswith('/'):
            list_of_links.append(tld + link) # add base to partial link
        else:
            list_of_links.append(current_url + link)
        row.find_element_by_css_selector('button').click()
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Sabesh    6 年前

    循环正在工作。你能试着把你的wget版本升级到3.2并检查一下吗?

    new_links = ['http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=vPjrUnz0wbA%3D',
    'http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=dsyx6l1Fbig%3D',
    'http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=Cb64W7EHlD8%3D',
    'http://digesto.asamblea.gob.ni/consultas/util/pdf.php?type=rdd&rdd=A4TKEG9x4F8%3D']
    
    for new_link in new_links:
        wget.download(new_link)
    
    Output: four files got downloaded in the name of pdf.php, pdf(1).php .,etc