@LilLord

Как решить проблему с парсингом?

Ошибка в том, что когда я делаю парсинг интернет-магазина, объявления повторяются и показывает только 15 названий объявлений, и дальше возникает исключение пустой строки. Как сделать так, что бы показывало больше объявлений?

Ошибка:
TITLE: Игровой компьютер i5-3330 | GTX 1060 | 8GB RAM | SSD 128GB | 500GB
TITLE: Игровой компьютер i5-3330 | GTX 1060 | 8GB RAM | SSD 128GB | 500GB
TITLE: Продажа и Сборка Системных Блоков и Компьютерных Комплектующих!!
TITLE: Игровой компьютер i5-3330 | GTX 1060 | 8GB RAM | SSD 128GB | 500GB
TITLE: Продажа и Сборка Системных Блоков и Компьютерных Комплектующих!!
TITLE: RYZEN на СТЕРОИДАХ!RTX 2060+5 3600 игровой компьютер super i7 i9 пк
TITLE: Игровой компьютер i5-3330 | GTX 1060 | 8GB RAM | SSD 128GB | 500GB
TITLE: Продажа и Сборка Системных Блоков и Компьютерных Комплектующих!!
TITLE: RYZEN на СТЕРОИДАХ!RTX 2060+5 3600 игровой компьютер super i7 i9 пк
TITLE: Компьютер (системный блок/ПК) Fujitsu E710/2ядра/Pentium G2020/8GB/SSD
TITLE: Игровой компьютер i5-3330 | GTX 1060 | 8GB RAM | SSD 128GB | 500GB
TITLE: Продажа и Сборка Системных Блоков и Компьютерных Комплектующих!!
TITLE: RYZEN на СТЕРОИДАХ!RTX 2060+5 3600 игровой компьютер super i7 i9 пк
TITLE: Компьютер (системный блок/ПК) Fujitsu E710/2ядра/Pentium G2020/8GB/SSD
TITLE: ИГРОВОЙ ПК / Xeon E5-2640 (i7-6700) / 16Gb / AMD RX470 4Gb/ SSD+HDD
Traceback (most recent call last):
  File "D:\Моя розробка [PYTHON]\ТелеграмБОТ [Початок]\parser_data.py", line 13, in <module>
    'title': comp.find('a', class_ = 'marginright5 link linkWithHash detailsLink linkWithHashPromoted').get_text(strip = True)
AttributeError: 'NoneType' object has no attribute 'get_text'


Код:
import requests
from bs4 import BeautifulSoup

r  = requests.get("https://www.olx.ua/uk/elektronika/kompyutery-i-komplektuyuschie/nastolnye-kompyutery/")
data = r.content
soup = BeautifulSoup(data, 'html.parser')
all_data = soup.findAll('div', class_='offer-wrapper')
comp_list = [] 


for comp in all_data:
    comp_list.append({
        'title': comp.find('a', class_ = 'marginright5 link linkWithHash detailsLink linkWithHashPromoted').get_text(strip = True)
        })
    for comp_l in comp_list:
        print(f'TITLE: {comp_l["title"]}')


Спасибо за любую помочь!
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
adugin
@adugin Куратор тега Python
Очевидно, comp.find() ничего не находит и возвращает None, у которого нет метода .get_text() - нужна проверка:
search_result = comp.find(...)
if search_result is not None:
    comp_list.append({'title': search_result.get_text(strip=True)})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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