Что нужно сделать, чтобы сайт загрузил javascript?
Пытаюсь достать книгу, так как в браузере читать совершенно неудобно. Написал скрипт, но он не загружает страницу полностью, до нужного мне тега, чтобы получить ссылку. С помощью selenium эмулирую загрузку, открывается браузер, визуально страница полностью прогружается, но нужный div все равно не ищется. Пишет, что не функционирует без javascript. Но ведь сайт прогружается, значит скрипты работают. Не понимаю в чем проблема.
from bs4 import BeautifulSoup
import requests
from fake_useragent import UserAgent
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
ua = UserAgent()
userAgent = ua.random
browser = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument("--incognito")
options.add_argument("--nogpu")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1280,1280")
options.add_argument("--no-sandbox")
options.add_argument("--enable-javascript")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')
driver = webdriver.Chrome(options=options)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": userAgent})
def get_data(url):
response = requests.get(
url,
headers={'user-agent': f'{userAgent}'}
)
soup = BeautifulSoup(response.content, "lxml")
links = soup.find_all('document-view-img__container')
print(links)
for i in range(537):
i += 1
url = f'https://viewer.rusneb.ru/ru/000199_000009_02000012752?page={i}&rotate=0&theme=white'
get_data(url)
break
try:
browser.get(url=url)
time.sleep(10)
except Exception as ex:
print(ex)
finally:
browser.close()
browser.quit()
Вручную все картинки уже давно нашел, мог бы скачать руками, но интересно сделать это автоматически средствами python
Ответы (1 шт):
Автор решения: Сергей Шашко
→ Ссылка
Надеюсь разберетесь что чему
import requests
page = 0
while True:
page +=1
res = requests.get(f'https://viewer.rusneb.ru/api/v1/document/000199_000009_02000012752/page/{page}')
if not (res.status_code == 200):
break
print(f'{page=}')
print('End')
Получить ссылку на скачивания pdf
import requests
from bs4 import BeautifulSoup
res = requests.get('https://rusneb.ru/catalog/000207_000017_RU_RGDB_BIBL_0000352301/')
soup = BeautifulSoup(res.content, "lxml")
ff = soup.find("a", class_="button button--full button--empty button--h52").get('href')
print(f'https://rusneb.ru{ff}')