Скачать PDF-файлы с URL-адреса в списке с Python3,7 - PullRequest
0 голосов
/ 14 января 2019

У меня есть скрипт на python, который очищает URL-адреса веб-сайта с селеном и сохраняет их в списке, затем я хотел бы загрузить их с помощью модуля 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

Edit2:

Частичный 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 Ответ

0 голосов
/ 14 января 2019

Ваш цикл работает. Можете ли вы попробовать обновить версию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...