-
Сообщений
9 495 -
Зарегистрирован
-
Посещение
-
Время онлайн
276д 22ч 46м 47с
Все публикации пользователя ...
-
идет выкачка всего контента на планете Как его запустить-то? :) Через что? Через ярлык? git clone https://github.com/GeorgyMaximov/tululu-parser.git cd tululu-parser pip install -r requirements.txt потом в зависимости от того что тебе надо сделать https://github.com/GeorgyMaximov/tululu-parser?tab=readme-ov-file#parse_tululu_categorypy
-
идет выкачка всего контента на планете
-
Тебе же написали что только для 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' Эта хуйня (сайт) возвращает 200 "file not found", вместо 404. Поэтому падает. Проверяй вместо response.status == 200 еще и чтобы ответ не был "file not found" Чет пиздишь. Как у тебя могла скачаться книга, которой нет на сайте а все я понял файл сохраняется но по факту он пустой надо проверки накручивать что книга существует и что книга есть в таком формате тз не было так что имеем что имеем
-
Тебе же написали что только для 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' попробуй из имени файла реплейс ковычек сделать на маке работает так что дальше сам...
-
Тебе же написали что только для txt написано. А я не видел :) В общем он на рандомной книге ошибку выдаёт. Ну корчое ещё раз спасибо. скинь ошибку текстом а не скрином
-
на военном деле работает, остальное не проверял так что дальше сам
-
данные приходят в запросах или вебсокете, оттуда и читать напрямую Я попросил. :) Просьба не грех. 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]