Проблемы c получением всего набора тегов при парсинге сайта

100
13 декабря 2020, 00:20

В учебных целях пытаюсь парсить сайт автообъявлений https://ab.onliner.by, цель парсинга получить ссылки на авто, ссылка выглядит как "https://ab.onliner.by/car/ID". При анализе сайта через браузер четко видно, что вожделенный ID машины обитает внутри тега:

<a href="/car/4164123"><img width="80" height="80" src="https://content.onliner.by/automarket/2218487/80x80/496c37de7ec4ec3eabf6eb66e6c9bb24.jpeg"></a>

Проблема в том, что в возвращаемом HTML коде этого тега нет

import requests
from bs4 import BeautifulSoup
def get_html(url):
    response = requests.get(url)
    return response.text
print(get_html('https://ab.onliner.by'))

Собственно возникает вопросы что упускаю/не так делаю?

Answer 1

Для загрузки страницы со скриптами используйте пакет Selenium вместе с Chrome или Firefox.

from selenium import webdriver
import time
chrome_driver = 'C:/Tools/ChromeDriver/chromedriver.exe' 
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path=chrome_driver, options=chrome_options)
driver.get('https://ab.onliner.by')
# Таймаут, чтобы JS успели отработать.
# Использование time.sleep - это грубый и не очень надёжный подход
# Лучше почитать и использовать Expected Conditions из того же Selenium
# from selenium.webdriver.support.ui import WebDriverWait
# from selenium.webdriver.support import expected_conditions as EC
time.sleep(5) 
print(driver.page_source)
READ ALSO
Как повернуть рисунок в picturebox на N градусов?

Как повернуть рисунок в picturebox на N градусов?

У меня есть условный рисунок внутри picturebox,к примеру

104
Сложить все данные из JSON

Сложить все данные из JSON

хочу сложить все данные полученные из json

141
Парсинг по списку в RichTextBox

Парсинг по списку в RichTextBox

Сделал парсер json на одном сайте, теперь мне нужно реализовать список в richTextBox1 ссылок, откуда парсить и выводить все полученные данные в richTextBox2

125