Есть ли возможность отдельно получить нужный файл, приходящий браузеру после отправления запроса?
Перед тем, как парсить сайт, пробовал отследить, что приходит в fiddler, но там большое количество переходов, поэтому бросил затею.
При отправке get запроса по ссылке с помощью c# и HttpClient приходит некий js код, вперемешку с html тегами
using HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get,"https://megamarket.ru/catalog/zhenskaya-odezhda/"); using HttpResponseMessage response = await httpClient.SendAsync(request);
Также использовал python и selenium с webdriver, чтобы получить хоть что-то вразумительное, но в этом случае приходит километровый текст, там тоже намешаны html страницы и js код, при этом это спарсить через bs4 невозможно.
''' driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window()
try:
driver.get(url=url)
WebDriverWait(driver, 60).until(ec.presence_of_element_located((By.TAG_NAME, "html")))
with open('source-page.html', 'w', encoding='utf-8') as file:
file.write(driver.page_source)
except Exception as ex:
print(ex)
finally:
driver.close()
driver.quit()
'''
В режиме разработчика есть путь к файлу html страницы во вкладке source, top и конкретная страница, можно ли как-то средствами selenium просто скачать нужную страницу из браузера, а не получать километровую мешанину?

Ответы (1 шт):
from bs4 import BeautifulSoup
from playwright.sync_api import sync_playwright
with sync_playwright() as playwright:
browser = playwright.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://megamarket.ru/catalog/zhenskaya-odezhda/")
source = page.content()
with open('source-page.html', 'w', encoding='utf-8') as file:
file.write(source)
soup = BeautifulSoup(source, 'lxml')
items = soup(class_="catalog-item catalog-item-desktop ddl_product catalog-item_enlarged")
for x in items: print(x.find(class_="item-title").text.strip())
browser.close()
# Водолазка Panda, белый
# ...
# Комплект носков Cotton & Quality, разноцветный