Перейти к публикации
  • Сейчас на странице   Всего пользователей: 3   (1 пользователь, 2 гостя)

Rooster

Программирование[11]

var  

282 пользователя проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

yellyex написал 40 минут назад:
Just.Doit написал 45 минут назад:
yellyex написал 1 час назад:

Привет! :)

Ребят, пожалуйста помогите написать парсер на скачивание книг с сайта. На питоне.

Порядок действий:

1. Пользователь открывает страницу. Страница наполнена всеми книгами нужного жанра. Например: https://royallib.com/genre/voennoe_delo/

2. Далее вводим эту страницу в код питона.

3. Каждую книгу нужно скачать нужно в нескольких форматах: .txt; .doc; .fb2

4. Нажимаем выполнить в программе.

 

 

 

 

вроде все расписал

в чем конкретно сложность?

как выбрать пасер на питоне?

загугли Python html parser

 

тебе нужно найти по какому пути лежат ссылки на скачивание (если они там есть - иногда они могут быть зашиты в джаваскрипте и выдаваться по клику). открываешь либо в тектовом редакторе, либо еще лучше в chrome dev tools - там наводишь на элемент который обычно скачивает и смотришь из чего он состоит - гдето должна быть ссылка (если она там есть)

 

ну а дальше пишешь в питон программе как добраться до этого элемента и взять текст ссылки -

а дальше имея текст ссылки - отправляешь хттп запрос по этому юрл

Да уже загуглил, но они все разные. Я скачал несколько сижу разбираюсь, как подстроить их под свою задачу.

Кажется, что парсер написанный продотерами будет быстрее и эффективней :pdanus::pdanus::pdanus:

тебе надо распарсить страницу чтобы получить линки на страницу с книгой

вот ето 
image.png.a6599b7993c7b5fe8a1a6eeeac4bacf0.png

 

 

потом просто поменять линк в нужный формат 

https://royallib.com/book/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.html
https://royallib.com/get/fb2/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.zip
https://royallib.com/get/epub/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.zip 

 

первый линк это ссылка на страницу книги 

второй и третий линк на скачивание 

yellyex понравилось это

Поделиться сообщением


Ссылка на сообщение
... написал 16 минут назад:
yellyex написал 1 час назад:
Just.Doit написал 1 час назад:
yellyex написал 2 часа назад:

Привет! :)

Ребят, пожалуйста помогите написать парсер на скачивание книг с сайта. На питоне.

Порядок действий:

1. Пользователь открывает страницу. Страница наполнена всеми книгами нужного жанра. Например: https://royallib.com/genre/voennoe_delo/

2. Далее вводим эту страницу в код питона.

3. Каждую книгу нужно скачать нужно в нескольких форматах: .txt; .doc; .fb2

4. Нажимаем выполнить в программе.

 

 

 

 

вроде все расписал

в чем конкретно сложность?

как выбрать пасер на питоне?

загугли Python html parser

 

тебе нужно найти по какому пути лежат ссылки на скачивание (если они там есть - иногда они могут быть зашиты в джаваскрипте и выдаваться по клику). открываешь либо в тектовом редакторе, либо еще лучше в chrome dev tools - там наводишь на элемент который обычно скачивает и смотришь из чего он состоит - гдето должна быть ссылка (если она там есть)

 

ну а дальше пишешь в питон программе как добраться до этого элемента и взять текст ссылки -

а дальше имея текст ссылки - отправляешь хттп запрос по этому юрл

Да уже загуглил, но они все разные. Я скачал несколько сижу разбираюсь, как подстроить их под свою задачу.

Кажется, что парсер написанный продотерами будет быстрее и эффективней :pdanus::pdanus::pdanus:

тебе надо распарсить страницу чтобы получить линки на страницу с книгой

вот ето 
image.png.a6599b7993c7b5fe8a1a6eeeac4bacf0.png

 

 

потом просто поменять линк в нужный формат 

https://royallib.com/book/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.html
https://royallib.com/get/fb2/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.zip
https://royallib.com/get/epub/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.zip 

 

первый линк это ссылка на страницу книги 

второй и третий линк на скачивание 

Да это хороший выход


moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

Я странствия этого еблана видел в покерных топанах, а потом в таверне - это один из самых безумных людей на форуме. Я искренне надеялся, что его зов о помощи останется незамеченным, но нет, нашелся доброволец и вот уже три страницы мы пожинаем плоды

Поделиться сообщением


Ссылка на сообщение
yellyex написал 4 минуты назад:
... написал 20 минут назад:
yellyex написал 1 час назад:
Just.Doit написал 1 час назад:
yellyex написал 2 часа назад:

Привет! :)

Ребят, пожалуйста помогите написать парсер на скачивание книг с сайта. На питоне.

Порядок действий:

1. Пользователь открывает страницу. Страница наполнена всеми книгами нужного жанра. Например: https://royallib.com/genre/voennoe_delo/

2. Далее вводим эту страницу в код питона.

3. Каждую книгу нужно скачать нужно в нескольких форматах: .txt; .doc; .fb2

4. Нажимаем выполнить в программе.

 

 

 

 

вроде все расписал

в чем конкретно сложность?

как выбрать пасер на питоне?

загугли Python html parser

 

тебе нужно найти по какому пути лежат ссылки на скачивание (если они там есть - иногда они могут быть зашиты в джаваскрипте и выдаваться по клику). открываешь либо в тектовом редакторе, либо еще лучше в chrome dev tools - там наводишь на элемент который обычно скачивает и смотришь из чего он состоит - гдето должна быть ссылка (если она там есть)

 

ну а дальше пишешь в питон программе как добраться до этого элемента и взять текст ссылки -

а дальше имея текст ссылки - отправляешь хттп запрос по этому юрл

Да уже загуглил, но они все разные. Я скачал несколько сижу разбираюсь, как подстроить их под свою задачу.

Кажется, что парсер написанный продотерами будет быстрее и эффективней :pdanus::pdanus::pdanus:

тебе надо распарсить страницу чтобы получить линки на страницу с книгой

вот ето 
image.png.a6599b7993c7b5fe8a1a6eeeac4bacf0.png

 

 

потом просто поменять линк в нужный формат 

https://royallib.com/book/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.html
https://royallib.com/get/fb2/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.zip
https://royallib.com/get/epub/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.zip 

 

первый линк это ссылка на страницу книги 

второй и третий линк на скачивание 

Да это хороший выход

у тебя там тестовое задание или чо ето зачем?

Поделиться сообщением


Ссылка на сообщение
... написал 1 минуту назад:
yellyex написал 5 минут назад:
... написал 22 минуты назад:
yellyex написал 1 час назад:
Just.Doit написал 1 час назад:
yellyex написал 2 часа назад:

Привет! :)

Ребят, пожалуйста помогите написать парсер на скачивание книг с сайта. На питоне.

Порядок действий:

1. Пользователь открывает страницу. Страница наполнена всеми книгами нужного жанра. Например: https://royallib.com/genre/voennoe_delo/

2. Далее вводим эту страницу в код питона.

3. Каждую книгу нужно скачать нужно в нескольких форматах: .txt; .doc; .fb2

4. Нажимаем выполнить в программе.

 

 

 

 

вроде все расписал

в чем конкретно сложность?

как выбрать пасер на питоне?

загугли Python html parser

 

тебе нужно найти по какому пути лежат ссылки на скачивание (если они там есть - иногда они могут быть зашиты в джаваскрипте и выдаваться по клику). открываешь либо в тектовом редакторе, либо еще лучше в chrome dev tools - там наводишь на элемент который обычно скачивает и смотришь из чего он состоит - гдето должна быть ссылка (если она там есть)

 

ну а дальше пишешь в питон программе как добраться до этого элемента и взять текст ссылки -

а дальше имея текст ссылки - отправляешь хттп запрос по этому юрл

Да уже загуглил, но они все разные. Я скачал несколько сижу разбираюсь, как подстроить их под свою задачу.

Кажется, что парсер написанный продотерами будет быстрее и эффективней :pdanus::pdanus::pdanus:

тебе надо распарсить страницу чтобы получить линки на страницу с книгой

вот ето 
image.png.a6599b7993c7b5fe8a1a6eeeac4bacf0.png

 

 

потом просто поменять линк в нужный формат 

https://royallib.com/book/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.html
https://royallib.com/get/fb2/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.zip
https://royallib.com/get/epub/baryatinskiy_mihail/_trofeynaya_bronetankovaya_tehnika_vermahta.zip 

 

первый линк это ссылка на страницу книги 

второй и третий линк на скачивание 

Да это хороший выход

у тебя там тестовое задание или чо ето зачем?

Нет, готовлюсь к апокалипсису. Запасаюсь книгами :)


moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

Я странствия этого еблана видел в покерных топанах, а потом в таверне - это один из самых безумных людей на форуме. Я искренне надеялся, что его зов о помощи останется незамеченным, но нет, нашелся доброволец и вот уже три страницы мы пожинаем плоды

Поделиться сообщением


Ссылка на сообщение

писать парсерочки дефолтное оплачиваемое задание на всяких фриланс помойках, а он еще и бесплатно хочет

scarppy и yellyex понравилось это

Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
Kant написал Только что:

писать парсерочки дефолтное оплачиваемое задание на всяких фриланс помойках, а он еще и бесплатно хочет

Я попросил. :) Просьба не грех.


moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

Я странствия этого еблана видел в покерных топанах, а потом в таверне - это один из самых безумных людей на форуме. Я искренне надеялся, что его зов о помощи останется незамеченным, но нет, нашелся доброволец и вот уже три страницы мы пожинаем плоды

Поделиться сообщением


Ссылка на сообщение

Кстати, по поводу парсеров, кто-нибудь шарит, если парсить сайт, где все работает на джаваскрипте (динамический контент с постоянным обновлением), который выдает почти пустой html при запросе, есть ли более оптимальный метод для парсинга чем через селениум открывать браузер и читать всю хуйню?

Поделиться сообщением


Ссылка на сообщение
RedThunder458 написал 11 минут назад:

Кстати, по поводу парсеров, кто-нибудь шарит, если парсить сайт, где все работает на джаваскрипте (динамический контент с постоянным обновлением), который выдает почти пустой html при запросе, есть ли более оптимальный метод для парсинга чем через селениум открывать браузер и читать всю хуйню?

данные приходят в запросах или вебсокете, оттуда и читать напрямую

yellyex написал 55 минут назад:
Kant написал 56 минут назад:

писать парсерочки дефолтное оплачиваемое задание на всяких фриланс помойках, а он еще и бесплатно хочет

Я попросил. :) Просьба не грех.

from bs4 import BeautifulSoup
import asyncio
import aiohttp

download_extensions = ['txt', 'doc', 'fb2']


async def get_books_links(url):
    async with aiohttp.ClientSession() as session:
        get_page = await session.get(url)
        parser = BeautifulSoup(await get_page.text(), 'html.parser')
        parse_links = parser.select('table a')
        tasks = [asyncio.create_task(download_book(session, link['href'])) for link in parse_links[:2]]
        await asyncio.gather(*tasks)


async def download_book(session, url):
    book_name = url.split('/')[-1].replace('.html', '')
    print(book_name)
    print(url)
    url = url.replace('/book/', '/get/txt/').replace('.html', '.zip')
    full_url = f"https:{url}"
    async with session.get(full_url) as response:
        if response.status == 200:
            with open(f"{book_name}.zip", 'wb') as f:
                while True:
                    chunk = await response.content.read(1024)
                    if not chunk:
                        break
                    f.write(chunk)
            print(f'download {book_name} complete')
        else:
            print(f'download error {response.status}')

if __name__ == '__main__':
    asyncio.run(get_books_links('https://royallib.com/genre/voennoe_delo/'))

 

дли военного дела работает, остальное не проверял

 

другие форматы сам можешь добавить меняя вот тут url = url.replace('/book/', '/get/txt/').replace('.html', '.zip') txt на другое

там скачивается 2 файла, потому что стоит срез вот тут 
tasks = [asyncio.create_task(download_book(session, link['href'])) for link in parse_links[:2]]
убери просто [:2]

RedThunder458, yellyex, Arzanis и 1 другому понравилось это

Поделиться сообщением


Ссылка на сообщение
(изменено)

@... Спасибо :)

Я не нашёл строчку выбора места сохранения. Ну ладно сам допишу :) Спасибо, что помог! :)

Не, чё то не то. Не всё скачивает.

asdasd.png

Короче из-за чего-то идут ошибки при скачивании в разных местах. Я попробую разобраться.


Изменено пользователем yellyex

moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

Я странствия этого еблана видел в покерных топанах, а потом в таверне - это один из самых безумных людей на форуме. Я искренне надеялся, что его зов о помощи останется незамеченным, но нет, нашелся доброволец и вот уже три страницы мы пожинаем плоды

Поделиться сообщением


Ссылка на сообщение

Бля, а я косарь отдавал, когда военкоматы надо было спарсить. А мог на пд написать. :ponimau:

yellyex понравилось это

 

DB

59221730.png


Я - гений, ёпта

bfe7003be27e8e81ce6a7d2d8192e9ae.jpg


22


msg-93176-0-72842500-1438846470_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
yellyex написал 19 минут назад:

@... Спасибо :)

Я не нашёл строчку выбора места сохранения. Ну ладно сам допишу :) Спасибо, что помог! :)

Не, чё то не то. Не всё скачивает.

asdasd.png

Короче из-за чего-то идут ошибки при скачивании в разных местах. Я попробую разобраться.

 

на военном деле работает, остальное не проверял

так что дальше сам 

image.png

Поделиться сообщением


Ссылка на сообщение

 

yellyex написал 20 минут назад:

Не, чё то не то. Не всё скачивает.

 

Тебе же написали что только для txt написано.


 

DB

59221730.png


Я - гений, ёпта

bfe7003be27e8e81ce6a7d2d8192e9ae.jpg


22


msg-93176-0-72842500-1438846470_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Arzanis написал Только что:

 

yellyex написал 21 минуту назад:

Не, чё то не то. Не всё скачивает.

 

Тебе же написали что только для txt написано.

А я не видел :)

В общем он на рандомной книге ошибку выдаёт. 

Ну корчое ещё раз спасибо.


moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

Я странствия этого еблана видел в покерных топанах, а потом в таверне - это один из самых безумных людей на форуме. Я искренне надеялся, что его зов о помощи останется незамеченным, но нет, нашелся доброволец и вот уже три страницы мы пожинаем плоды

Поделиться сообщением


Ссылка на сообщение
yellyex написал Только что:

В общем он на рандомной книге ошибку выдаёт.

Уверен что выдает там где у книги не приложен txt формат.
Обернешь кусок внизу в цикл по "download_extensions" и всё заробит


 

DB

59221730.png


Я - гений, ёпта

bfe7003be27e8e81ce6a7d2d8192e9ae.jpg


22


msg-93176-0-72842500-1438846470_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Arzanis написал Только что:
yellyex написал 1 минуту назад:

В общем он на рандомной книге ошибку выдаёт.

Уверен что выдает там где у книги не приложен txt формат.
Обернешь кусок внизу в цикл по "download_extensions" и всё заробит

Ну я так и подумал :)


moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

Я странствия этого еблана видел в покерных топанах, а потом в таверне - это один из самых безумных людей на форуме. Я искренне надеялся, что его зов о помощи останется незамеченным, но нет, нашелся доброволец и вот уже три страницы мы пожинаем плоды

Поделиться сообщением


Ссылка на сообщение
yellyex написал 1 минуту назад:
Arzanis написал 2 минуты назад:

 

yellyex написал 23 минуты назад:

Не, чё то не то. Не всё скачивает.

 

Тебе же написали что только для txt написано.

А я не видел :)

В общем он на рандомной книге ошибку выдаёт. 

Ну корчое ещё раз спасибо.

скинь ошибку текстом а не скрином 

Поделиться сообщением


Ссылка на сообщение
... написал 1 минуту назад:
yellyex написал 2 минуты назад:
Arzanis написал 3 минуты назад:

 

yellyex написал 24 минуты назад:

Не, чё то не то. Не всё скачивает.

 

Тебе же написали что только для txt написано.

А я не видел :)

В общем он на рандомной книге ошибку выдаёт. 

Ну корчое ещё раз спасибо.

скинь ошибку текстом а не скрином 

В общем он всё скачивает, а на рандомной книге выдаёт ошибку.

 

Traceback (most recent call last):
  File "C:/Users/User/Desktop/parcer.py", line 36, in <module>
    asyncio.run(get_books_links('https://royallib.com/genre/voennoe_delo/'))
  File "C:\Program Files\Python312\Lib\asyncio\runners.py", line 194, in run
    return runner.run(main)
  File "C:\Program Files\Python312\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
  File "C:\Program Files\Python312\Lib\asyncio\base_events.py", line 687, in run_until_complete
    return future.result()
  File "C:/Users/User/Desktop/parcer.py", line 14, in get_books_links
    await asyncio.gather(*tasks)
  File "C:/Users/User/Desktop/parcer.py", line 25, in download_book
    with open(f"{book_name}.zip", 'wb') as f:
OSError: [Errno 22] Invalid argument: 'iz_otchyota__3_vl_ginzburga_"1_ispolzovanie_Li6D_v_sloyke…".zip'

 


moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

Я странствия этого еблана видел в покерных топанах, а потом в таверне - это один из самых безумных людей на форуме. Я искренне надеялся, что его зов о помощи останется незамеченным, но нет, нашелся доброволец и вот уже три страницы мы пожинаем плоды

Поделиться сообщением


Ссылка на сообщение
(изменено)
yellyex написал 3 минуты назад:
... написал 5 минут назад:
yellyex написал 6 минут назад:
Arzanis написал 7 минут назад:

 

yellyex написал 28 минут назад:

Не, чё то не то. Не всё скачивает.

 

Тебе же написали что только для txt написано.

А я не видел :)

В общем он на рандомной книге ошибку выдаёт. 

Ну корчое ещё раз спасибо.

скинь ошибку текстом а не скрином 

В общем он всё скачивает, а на рандомной книге выдаёт ошибку.

 


Traceback (most recent call last):
  File "C:/Users/User/Desktop/parcer.py", line 36, in <module>
    asyncio.run(get_books_links('https://royallib.com/genre/voennoe_delo/'))
  File "C:\Program Files\Python312\Lib\asyncio\runners.py", line 194, in run
    return runner.run(main)
  File "C:\Program Files\Python312\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
  File "C:\Program Files\Python312\Lib\asyncio\base_events.py", line 687, in run_until_complete
    return future.result()
  File "C:/Users/User/Desktop/parcer.py", line 14, in get_books_links
    await asyncio.gather(*tasks)
  File "C:/Users/User/Desktop/parcer.py", line 25, in download_book
    with open(f"{book_name}.zip", 'wb') as f:
OSError: [Errno 22] Invalid argument: 'iz_otchyota__3_vl_ginzburga_"1_ispolzovanie_Li6D_v_sloyke…".zip'

 

попробуй из имени файла реплейс ковычек сделать

 

на маке работает так что дальше сам...

image.png.d7907d0bb87b399be9891b0dad7d7284.png

 


Изменено пользователем ...
yellyex понравилось это

Поделиться сообщением


Ссылка на сообщение

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

×
×
  • Создать...