H
H
hitachi2022-04-02 09:36:42
Python
hitachi, 2022-04-02 09:36:42

How to parse pdf files from a website?

All the best, I have a question. How to parse pdf in my case of a book from the site - https://codernet.ru/media/
Preferably step by step (beginner)
I try on python, who knows how to
help pliz
thanks in advance =)

Answer the question

In order to leave comments, you need to log in

3 answer(s)
N
Nadim Zakirov, 2022-04-02
@hitahi

This is done elementarily, through the browser console. Go to this page:
https://codernet.ru/media
Press the combination CTRL + SHIFT + J and in the console that opens, enter:

// Получаем список всех ссылок со страницы:

links = document.querySelectorAll('a[href]');

// Перебираем найденные ссылки в цикле:

for (var n = 0; n < links.length; n++) {
  
  // Если ссылка ведет на текущий сайт (внутренняя):
  
  if (new URL(links[n].href)['host'] == location.host) {
    
    // Скачиваем html-код по этой ссылке:
    
    html = await (await fetch(links[n].href)).text();
    
    // Парсим этот html-код:
    
    doc = new DOMParser().parseFromString(html, 'text/html');
    
    // Ищем в спарсеном коде все pdf-ки:
    
    pdfs = doc.querySelectorAll('a[href$=".pdf"]');
    
    // Перебираем найденные pdf-ки в цикле:
    
    for (var i = 0; i < pdfs.length; i++) {
      
      // Выводим ссылку в консоли:
      console.log(pdfs[i].href);
      
    }
    
  }
  
}

A
alexbprofit, 2022-04-02
@alexbprofit

use selenium for this purpose.
hint: you can search for the desired elements through xpath

P
PavelMos, 2022-04-02
@PavelMos

If you just download files from directories, then wget is easier.
If you parse and it is in python, then you need the requests and bs4 modules ( beautifulsoup, bs ) see the instructions for them.

link='https://codernet.ru/media/'
r1=requests.get(link) #создаётся объект request с содержимым, полученным в ответ от сервера. Сам по себе он не текст странички 
r2=r1.content.decode('utf-8') #декодируется содержимое,  r2 это уже текст
soup1=bs.find_all ('a') #парсер beautifulsoup ищет все теги <a> где стоят ссылки

after that, see which links are absolute or relative, if relative, add the parent part of the path to them and make a request again and get the file names (relative) from the links and download those of them that are pdf
f1= open ('путь", 'wb')
r1 = requests.get('link1') 
f1.write(r1.content)  
f1.close()

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question