:: Не фоксом единым
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
Спасибо, всё работает. Это была моя невнимательность. Буду пытаться убрать лишний столбец "валюта", надо чтобы было как в оригинале: Р/шт., Р/пог., Р/кг и т.д.
# Новые селекторы при изменении верстки
response.css('.new-item-class')
Логирование
Настроено логирование с уровнем INFO:
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
Этот код позволит скрэйпить сайты разной структуры?
Ratings: 0 negative/0 positive
Re: web data scraping
Joys

Сообщений: 3622
Дата регистрации: 25.06.2000
glaz58
Этот код позволит скрэйпить сайты разной структуры?
Как вы себе это представляете? То что вам требуется- получение конкретных данных с сайта это Скрапинг + Парсинг
Скрапинг чаще может быть универсальным,
Парсинг — почти всегда уникален для каждого сайта, потому как парсинг приходится подгонять код под конкретную верстку сайта.
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
Вот именно это я пытаюсь узнать. В каких строках кода находится настройка на
Joys
конкретную верстку сайта.
?
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
Чтобы запустить программу в среде Idle Python 3.x кодировка должна быть UTF-8
pip install scrapy pandas xlsxwriter
вот такая команда в colab нормально отрабатывает. Idle сообщает о синтаксической ошибке pip install scrapy pandas xlsxwriter вот здесь
в букве "i"
Ratings: 0 negative/0 positive
Re: web data scraping
Joys

Сообщений: 3622
Дата регистрации: 25.06.2000
glaz58
Вот именно это я пытаюсь узнать. В каких строках кода находится настройка на
во всех, где идет работа с селекторами css, с Xpath и дальнейшая обработка значений. То есть грубо говоря, этот скрипт только для одного сайта. Для другого надо писать другой парсер.
Ratings: 0 negative/1 positive
Re: web data scraping
sphinx

Сообщений: 32802
Откуда: Екатеринбург
Дата регистрации: 22.11.2006
Цитата:
Для другого надо писать другой парсер.

Тоже так думаю.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
Как сделать, чтобы в единицу измерения выводилось вот такое: Р/шт (Р/упа или Р/м и т.д.) это действительно то, что на сайте. Столбец "Валюта", где написано "руб." не нужен, в РФ все цены в рублях.
Вот такая строка сохраняет чисто единицу измерения без символа рубля
price_measure = item_info.css('.price_measure::text').get('').strip().replace('/', '')
а надо, чтобы всё вместе, как на сайте в оригинале.
Ratings: 0 negative/0 positive
Re: web data scraping
chunihin-df

Сообщений: 151
Откуда: Тюмень
Дата регистрации: 18.11.2013
price_measure = 'Р' + item_info.css('.price_measure::text').get('').strip()



Исправлено 1 раз(а). Последнее : chunihin-df, 27.04.25 19:46
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
Это просто приставить 'Р' к единице измерения. А как сделать, чтобы с сайта брать "живьём", то, что там есть без изменений? Р/шт или Р/упа или Р/м и т.д. только вместо 'Р' на сайте символ рубля. Вижу, что на сайте нет "живьём" символа рубля, а есть вот такое
<span class="price_measure">/упа</span>
Значит останется просто единица измерения.



Исправлено 2 раз(а). Последнее : glaz58, 27.04.25 20:08
Ratings: 0 negative/0 positive
Re: web data scraping
chunihin-df

Сообщений: 151
Откуда: Тюмень
Дата регистрации: 18.11.2013
Воспользоваться инструментами разработчика в браузере и посмотреть какой класс используется у валюты, использовать селектор по этому классу, соединить валюту с еи
price_measure = item_info.css('.price_currency::text').get('').strip() + item_info.css('.price_measure::text').get('').strip()

[attachment 37144 2025-04-27214224.png]
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
Спасибо, вот теперь получилось то, что на сайте, и именно символ рубля, всё как надо. Только в коде я такого не увидел. Я открываю сайт в Google Chrome. Теперь ещё и сам код перестал открываться.
Ratings: 0 negative/0 positive
Re: web data scraping
chunihin-df

Сообщений: 151
Откуда: Тюмень
Дата регистрации: 18.11.2013
Надо правой кнопкой нажать на текст, который вам требуется выгрузить, откроется меню, в хроме пункт меню называется "Просмотреть код"
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
В прикреплении не видно ничего такого, что бы было похоже на нужный код
Ratings: 0 negative/0 positive
Re: web data scraping
Joys

Сообщений: 3622
Дата регистрации: 25.06.2000
Надо смотреть на вкладке Элементы, а не описание Стилей..
Если по правому клику на выделенном элементе, у вас не получается, нажмите просто на странице F12, затем CTRL+SHIFT+С и мышкой кликните по нужному фрагменту на странице.. При наведении он будет выделяться/подсвечиваться.
Также выбрать можно нажав на значок стрелка в пунктирном квадрате
[attachment 37148 Clip2net_250428053711.png]
[attachment 37149 Clip2net_250428054359.png]



Исправлено 1 раз(а). Последнее : Joys, 28.04.25 05:46
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
Спасибо, почему-то верхняя часть окна, где "элементы", оказалась свёрнутой. Я потянул вниз за границу между частями и код открылся.
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
for item_info in response.css('.item_info'):
title = item_info.css('.item-title').xpath('./a/span/text()').get()
# Извлекаем цену и единицу измерения
price = item_info.css('.price_value::text').get('').strip()
price_measure = item_info.css('.price_currency::text').get('').strip() + item_info.css('.price_measure::text').get('').strip()
self.products.append({
'Название': title,
'Цена': float(''.join(filter(str.isdigit, price))),
'Единица измерения': price_measure
})
Как вот из этой части кода (извлечение данных) сделать маленькую программу для простого просмотра, правильно ли извлекаются данные? Я так понимаю, что эта часть кода критична по отношению к вёрстке конкретного сайта. Сценарий такой: открываю сайт и запускаю программу. На экране или где-то ещё функцией print() показать 'Название', 'Цена', 'Единица измерения'. Для одного товара, чтобы не гонять по всем.
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
def parse(self, response):
try:
for item_info in response.css('.item_info'):
title = item_info.css('.item-title').xpath('./a/span/text()').get()
# Извлекаем цену и единицу измерения
price = item_info.css('.price_value::text').get('').strip()
price_measure = item_info.css('.price_currency::text').get('').strip() + item_info.css('.price_measure::text').get('').strip()
self.products.append({
'Название': title,
'Цена': float(''.join(filter(str.isdigit, price))),
'Единица измерения': price_measure
})
На основе этой функции надо сделать маленькую программу, которая ничего не будет скрэйпить и сохранять в df, только вывести на экран или куда значения одной ячейки с сайта. Для проверки правильности парсинга на других сайтах.
Ratings: 0 negative/0 positive
Re: web data scraping
dimag

Сообщений: 484
Откуда: Одинцово
Дата регистрации: 17.12.2002
Так в чем проблема ? Воспользуйся IDE и поставь точку останова.
[attachment 37154 Screenshot2025-04-29124744.png]


------------------
Never judge a book by its cover.




Исправлено 1 раз(а). Последнее : dimag, 29.04.25 12:54
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
И не надо никакого print()?
Самое интересное - вот это выражение:
title = item_info.css('.item-title').xpath('./a/span/text()').get()
Как оно может меняться для других сайтов?



Исправлено 1 раз(а). Последнее : glaz58, 29.04.25 14:34
Ratings: 0 negative/0 positive
Re: web data scraping
glaz58
Автор

Сообщений: 885
Откуда: Воронеж
Дата регистрации: 09.02.2008
dimag
Спроси DeepSeek, например
Можно вариант запроса к Deepseek здесь написать?
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2025 Fox Club 
Яндекс.Метрика