Задать вопрос
Mikhaliich
@Mikhaliich

Как понять ошибку цикла на питоне?

Хочу повторить тутор по скрапингу. Застрял в одном месте..

from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
from time import sleep
from tqdm import tqdm

browser = Chrome('C:\Jupyter lab home dir\chromedriver.exe')
url = 'https://www.avito.ru/nizhnevartovsk/vakansii?cd=1'
browser.get(url)

obyavs = soup.find_all('h3', class_='iva-item-title-py3i_') # список с помощью супа

soup = BeautifulSoup(browser.page_source, 'lxml')           # что ищем в блоке 
name = soup.find('h3', class_='iva-item-title-py3i_').text
zp = soup.find('span', class_='price-text-_YGDY').text.replace('\xa0000', '000').replace('\xa0₽', '')
graphic = soup.find('div', class_='iva-item-text-Ge6dR').text.split(' · ')[0]
gde_rab = soup.find('div', class_='iva-item-text-Ge6dR').text.split(' · ')[1]
description = soup.find('div', class_='iva-item-description-FDgK4').text.replace('\n', '')
type_of_job = soup.find('span', class_='iva-item-text-Ge6dR').text
geo_address = soup.find('div', class_='geo-address-fhHd0').text
date_of_creation = soup.find('div', class_='date-text-KmWDf').text

data = []
for obyav in obyavs:                                               # перебираем блоки
    name = obyav.find('h3', class_='iva-item-title-py3i_').text
    zp = obyav.find('span', class_='price-text-_YGDY').text.replace('\xa0000', '000').replace('\xa0₽', '')
    graphic = obyav.find('div', class_='iva-item-text-Ge6dR').text.split(' · ')[0]
    gde_rab = obyav.find('div', class_='iva-item-text-Ge6dR').text.split(' · ')[1]
    description = obyav.find('div', class_='iva-item-description-FDgK4').text.replace('\n', '')
    type_of_job = obyav.find('span', class_='iva-item-text-Ge6dR').text
    geo_address = obyav.find('div', class_='geo-address-fhHd0').text
    date_of_creation = obyav.find('div', class_='date-text-KmWDf')
    data.append([name, zp, graphic, gde_rab, description, type_of_job, geo_address, date_of_creation])


Пишет 'NoneType' object has no attribute 'text':

Скриншот фрагмента кода удалён модератором.

Когда вместо элемента перебора стоит soup, то текст вытягивается, а в цикле нет. Куда смотреть?
  • Вопрос задан
  • 55 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
iglebov
@iglebov
Backend-разработчик
Думаю, что лучше всего будет провести отладку программы.

Поставить точки остановки на строках с
name = ....
и в режиме debug смотреть что находится в переменных.

Сам использую для этого PyCharm.
Ответ написан
@dilmah949
Разработчик на Python, backend
У неизвестного типа объекта нет атрибута text. тоесть список пустой по какой-то причене возвращается
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы