У меня есть скрипт на 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()