Форум сайта python.su
Помогите пожалуйста спарсить все названия товаров с сайта. Сайт не большой всего 4 стр.
Дан сайт
НУЖНО:
Извлечь названия товара с каждой страницы (всего 4х страниц)
Данные с каждой страницы должны хранится в списке.
По итогу работы должны получится 4 списка которые хранятся в списке(список списков)
Пример ожидаемого списка
[, , , ]
Я смог написать только половину када, дальше не знаю как.
from bs4 import BeautifulSoup import requests url = 'https://parsinger.ru/html/index3_page_1.html' response = requests.get(url=url) response.encoding = 'utf-8' soup = BeautifulSoup(response.text, 'lxml') pagen = [item['href'] for item in soup.find('div', class_='pagen').find_all('a')] item = [] for i in range(4): item.append(f'https://parsinger.ru/html/index3_page_1.html={i}') print(item)
Отредактировано pisarev70 (Ноя. 5, 2022 11:40:25)
Офлайн
pisarev70
Помогите пожалуйста спарсить все названия товаров с сайта. Сайт не большой всего 4 стр. Дан сайт НУЖНО:Извлечь названия товара с каждой страницы (всего 4х страниц)Данные с каждой страницы должны хранится в списке.По итогу работы должны получится 4 списка которые хранятся в списке(список списков)Пример ожидаемого спискаЯ смог написать только половину када, дальше не знаю как.
import lxml.html as html html_body = html.fromstring(response) elements = html_body.xpath("//div[@class='item_card']//a[@class='name_item']/text()")
f'https://parsinger.ru/html/index3_page_{index}.html'
Отредактировано robisho (Ноя. 6, 2022 05:05:52)
Офлайн
from bs4 import BeautifulSoup import requests url = 'https://parsinger.ru/html/index3_page_1.html' def get_html(url): resp = requests.get(url) if resp.status_code == 200: return resp.content.decode('utf-8') def get_product_info(block): out = dict.fromkeys(['img', 'name', 'description', 'price']) img_box = block.find(class_='img_box') if img_box: img = img_box.find('img') if img: out['img'] = img['src'] name_item = img_box.find(class_='name_item') if name_item: out['name'] = name_item.text.strip() description = block.find(class_='description') if description: data = (i.split(':', 1) for i in description.text.strip().splitlines()) out['description'] = {k.lower().strip(): v.lower().strip() for k, v in data} price = block.find(class_='price') if price: v, n = price.text.split() out['price'] = int(v), n return out def get_data_from_html(html): soup = BeautifulSoup(html, 'lxml') out = [] items = (i for i in soup.find_all('div', class_='item')) for i in items: out.append(get_product_info(i)) return out html = get_html(url) result = get_data_from_html(html) print(result[0]) print("============") print([i['name'] for i in result if i['description']['тип'] == 'мышь проводная']) print("============") print([i['name'] for i in result if i['description']['тип'] == 'мышь беспроводная']) print("============") print([i['name'] for i in result if i['price'][0] < 600])
{'img': 'https://parsinger.ru/img/3/1.jpg', 'name': 'Vampire RGB,9 кнопок', 'description': {'бренд': 'defender', 'тип': 'мышь проводная', 'подключение к компьютеру': 'usb', 'игровая': 'да'}, 'price': (1610, 'руб')}
============
['Vampire RGB,9 кнопок', 'Defender Halo Z GM-430L', 'Defender sTarx GM-390L', 'Defender Skull GM-180L', 'Defender Killer GM-170L', 'Defender Ghost GM-190L', 'Defender Witcher GM-990']
============
['Defender Shark 2']
============
['Defender Halo Z GM-430L', 'Defender Skull GM-180L', 'Defender Killer GM-170L']
Process finished with exit code 0
Отредактировано xam1816 (Ноя. 6, 2022 23:24:54)
Офлайн