@66656665
22 года

Сделал парсер, выдает 2 ошибки?

Вот код:

import requests
from bs4 import BeautifulSoup

HOST = "https://irr.ru/cars/passenger/"
URL = "https://irr.ru/cars/passenger/lexus/"
HEADERS = {
    'user-agent': 'tyt user-agent',
    'accept': 'tyt accept'   
    }

def get_html(url, params=''):
    r = requests.get(url, headers=HEADERS, params=params)
    return r


def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('div', class_='listing__item')
    wgg = []

    for item in items:
        wgg.append(

            {
                'title':item.find('div', class_='listing__itemInner').find('div', class_='listing__itemColumn listing__itemColumn_main').find('div', class_='listing__itemTitleWrapper').find('div', class_='listing__itemTitle').find('div', class_='js-productListingProductName').get_text(),
                'link':item.find('div', class_='listing__itemInner').find('div', class_='listing__itemColumn listing__itemColumn_main').find('div', class_='listing__itemTitleWrapper').find('a').get('href'),
                'foto':item.find('div', class_='listing__itemInner').find('div', class_='listing__itemInner').find('div', class_='listing__itemColumn').find('div', class_='listing__imageWrapper').find('img').get('src'),
                'cena':item.find('div', class_='listing__itemInner').find('div', class_='listing__itemColumn listing__itemColumn_price').find('div', class_='listing__itemPrice').get_text(),
              
            }

        )

    return wgg


html = get_html(URL)

get_content(html.text)


Вот ошибки:

5f630981c03a3378228934.png
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@PavelMos
А поразмыслить над ошибкой логически ? В Питоне всё, все переменные, функции - объекты. У объектов есть встроенные атрибуты, например, у строки это строковые функции. BS в работе создаёт и использует свои объекты и они также имеют свои функции, например, этот find. Но если предыдущее действие (например, функция), ничего не вернула (по каким-то причинам), и получился объект типа NoneType, может ли он иметь же встроенные атрибуты, что и нормальный объект BS ? Значит, нужно разобраться, почему создаётся объект NoneType , к которому в строке 25 применяется встроенная функция find.

Если закомментировать title и foto, в которых проблема, то всё работает:
[{'cena': '\n    \t                2\xa0345\xa0000\xa0руб.\n    \t            ',
  'link': 'https://irr.ru/cars/passenger/used/lexus-lx-570-vnedorozhnik-2011-g-v-probeg-117000-km-avtomat-5-7-l-advert740313755.html'},
 {'cena': '\n    \t                1\xa0200\xa0000\xa0руб.\n    \t            ',
  'link': 'https://irr.ru/cars/passenger/used/lexus-gx-470-vnedorozhnik-2004-g-v-probeg-133569-km-avtomat-4-7-l-advert750625481.html'},
 {'cena': '\n    \t                1\xa0320\xa0000\xa0руб.\n    \t            ',
  'link': 'https://irr.ru/cars/passenger/used/lexus-rx-270-vnedorozhnik-2011-g-v-probeg-115000-km-avtomat-advert749088541.html'},
 {'cena': '\n    \t                1\xa0500\xa0000\xa0руб.\n    \t            ',
  'link': 'https://irr.ru/cars/passenger/used/lexus-gs-250-sedan-2013-g-v-probeg-142145-km-avtomat-2-5-l-advert753188137.html'},
 {'cena': '\n    \t                1\xa0839\xa0999\xa0руб.\n    \t            ',
  'link': 'https://irr.ru/cars/passenger/used/lexus-lx-570-vnedorozhnik-2008-g-v-probeg-265000-km-avtomat-5-7-l-advert752860724.html'},
 {'cena': '\n    \t                845\xa0000\xa0руб.\n    \t            ',
  'link': 'https://irr.ru/cars/passenger/used/lexus-rx-350-vnedorozhnik-2006-g-v-probeg-196000-km-avtomat-3-5-l-advert752339702.html'},
 {'cena': '\n    \t                1\xa0400\xa0000\xa0руб.\n    \t            ',
  'link': 'https://irr.ru/cars/passenger/used/lexus-ls-460-sedan-2012-g-v-probeg-390000-km-avtomat-advert744369992.html'},
 {'cena': '\n    \t                3\xa0900\xa0000\xa0руб.\n    \t            ',
  'link': 'https://irr.ru/cars/passenger/used/lexus-lx-limuzin-2010-g-v-probeg-44000-km-avtomat-advert699227821.html'},
 {'cena': '\n    \t                3\xa0400\xa0000\xa0руб.\n    \t            ',
  'link': 'https://irr.ru/cars/passenger/used/lexus-lx-570-vnedorozhnik-2013-g-v-probeg-75000-km-avtomat-advert753194033.html'}]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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