@del4pp

Сохранить как html, через python, как?

Здравствуйте ув. знатоки.
Сохраняю страницу через браузер как хтмл, сохраняет как надо, ссылки, теги и т.д.
Сохраняю через пайтон - в файле js код вместо ссылок.
Как сохранить через пайтон так же как через правую кнопку браузера без селениума?
  • Вопрос задан
  • 1183 просмотра
Решения вопроса 2
SoreMix
@SoreMix Куратор тега Python
yellow
Ваши товары отображаются после JS рендера. Обычные запросы на сайт (через requests и тд) не выполняют JS код. Как requests видит страницу можете посмотреть через CTRL + U. Если смотреть через RightClick -> Inspect Element, то вы видите уже отрендереный код.

Если нажать F12 -> Network, обновить страницу и открыть XHR запросы, будет видно, что все товары ищутся через запрос
https://brain.com.ua/search/1187/?Search=10750&Offset=0

и
https://brain.com.ua/search/142/?Search=10750&Offset=0


Где 1187 и 142 это категории, насколько я понимаю, а 10750 - ваш поисковой запрос. Оффсет понятно.

Так что у вас два варианта:
  1. Делать запросы по примеру как я отправил выше и парсить их товары с ответа
  2. Открывать нужную страницу через селениум и сохранять код. Думаю, в селениуме есть такой вариант
Ответ написан
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Смотрите в браузере xhr запросы. Данные поиска подгружаются динамически.
Вот пример:
import json
import requests
from bs4 import BeautifulSoup

headers = {'user-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0',
			'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
}

response = requests.get('https://brain.com.ua/search/1187/?Search=10750&Offset=0',headers=headers)

j_data = json.loads(response.text)

soup = BeautifulSoup(j_data['ProductsGrid'],'lxml')

items = soup.find_all('div',class_='col-lg-3 col-md-4 col-sm-6 col-xs-6 product-wrapper br-pcg-product-wrapper')

for item in items:
	url = 'https://brain.com.ua'+ item.find('h3').a.get('href')
	title = item.get('data-name')
	print(f'{title} - {url}')

spoiler
Источник бесперебойного питания Back-UPS CS 500 APC (BK500EI) - https://brain.com.ua/Istochnik_bespereboynogo_pita...
Конструктор LEGO Juniors Грузовик дорожной службы (10750) - https://brain.com.ua/Konstruktor_LEGO_Juniors_Gruz...

5ed7f923360ec390591389.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы