@Badarus

Как вытащить все ссылки на загрузку файлов с сайта?

Добрый день.
Есть такой ресурс: https://uristhome.ru/document
На нем более 5000 документов которые нужно выгрузить.
Третий день уже ломаю голову как это сделать....
Хотя бы каким-то образом вытащить ссылки на загрузку каждого файла.
Ссылки на загрузку идут по пути: https://uristhome.ru/sites/default/files/doc/

Как можно выгрузить с минимальными усилиями? Буду благодарен за помощь.
  • Вопрос задан
  • 3875 просмотров
Решения вопроса 1
datka
@datka
1 ) Скачиваешь и устанавливаешь Python. ( ставишь галочку для PATH )https://www.python.org/downloads/
2) Win+R -> pip install requests > OK
3) Win+R -> pip install bs4 > OK
4) Создаешь папку на рабочем столе.
5) Создаешь два фаила в папке.
5.1) Первый фаил например get_links.py , туда вставляешь этот
КОД
import requests
from bs4 import BeautifulSoup

main_url = 'https://uristhome.ru'
docs_url = "https://uristhome.ru/document"
headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}

down_link = []

r = requests.get(docs_url, headers=headers)
soup = BeautifulSoup(r.content, 'html.parser')
for doc in soup.find("ul",{"class": "y_articles-document-list"}):
    down_link.append(main_url+doc.find("a").attrs['href'])
    
with open('download_link.txt', 'a') as nf:
    nf.writelines('\n'.join(docs))
потом сохраняешь фаил.
5.2) Создаешь второй фаил например download_links.py туда вставляешь уже этот
КОД
import requests
from bs4 import BeautifulSoup

headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
down_link = open('download_links.txt', 'r')

docs = []
counter = 0 
for links in down_link.readlines():
    try:
        r = requests.get(links, headers=headers)
        soup = BeautifulSoup(r.content, 'html.parser')
        x = soup.find("div",{"class": "filefield-file"}).find("a").attrs['href']
        counter += 1
        print(counter)
        print(x)
        docs.append(x)
    except:
        pass

with open('documents_link.txt', 'a') as nf:
    nf.writelines('\n'.join(docs))


Как это работает:
1) открываешь get_links.py в папке создается текстовой файл с ссылками на документы
2) отрываешь download_links.py он будет обрабатывать тот текстовой файл. по окончанию создаст еще 1 текстовой файл documents_link.txt с ссылками на документы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
AgentSmith
@AgentSmith
Это мой правильный ответ на твой вопрос
Проще простого через регулярки
1. получить все ссылки на страницы с документами
2. Зайти по каждой этой ссылке
3. Найти на этой странице все ссылки на документы
4. Скачать документы
Ответ написан
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Если не умеете в программирование - го в гугл.

https://www.google.ru/search?q=get+all+links+from+site

например https://chrome.google.com/webstore/detail/link-kli...
Ответ написан
Комментировать
@pavelsha
Без программирования, но придется разобраться в параметрах утилиты

Взять WGET и скачать файлы определенного типа с рекурсивным обходом разделов сайта.

Возможно получится добиться нужных настроек через GUI WGET или найти нужные ключи в примерах из интернета.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы