Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
1 / 1 / 0
Регистрация: 01.11.2019
Сообщений: 31

Проблемы с парсером. Ошибка- ValueError: too many values to unpack (expected 2)

20.01.2021, 16:22. Показов 3110. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Когда пытаюсь спарсить несколько страниц, выскакивает ошибка: ValueError: too many values to unpack (expected 2)
Вот код:


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import requests
from bs4 import BeautifulSoup
 
 
URL = 'https://auto.ria.com/uk/newauto/marka-jaguar/'
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 OPR/72.0.3815.400', 'accept': '*/*'}
DOL=' $'
 
def get_html(url, params=None):
    r = requests.get(url, headers=HEADERS, params=params )
    return r
 
def get_pages_count(html):
    soup = BeautifulSoup(html, 'html.parser')
    pagination = soup.find_all('span', class_='mhide')
    if pagination:
        return int(pagination[-1].get_text())
    else:
        return 1
    
    
 
 
def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('div', class_='content-bar')
    
    
    cars=[]
    for item in items:
        uah_price=item.find('span', class_='i-block')
        if uah_price:
            uah_price = uah_price.get_text().replace('\xa0', ' ')
        else:
            uah_price = 'Цену в гривнах уточняйте.'
        cars.append({
              'title': item.find('div', class_='item ticket-title').get_text(strip=True),
              'link': item.find('a', class_='address').get('href'),
              'usd_price': item.find('span', class_='bold green size22').get_text()+DOL,
              'uah_price': uah_price, 
              'city': item.find('li', class_='view-location').get_text(strip=True).replace('(від)', ''),
            })
        return cars
        
        
 
 
def parse():
    html=get_html(URL)
    print(html.status_code)
    
    if html.status_code==200:
        cars = []
        pages_count = get_pages_count(html.text)
        for page in range(1, pages_count+1):
            print(f'Парсинг страницы {page} из {pages_count}...')
            html = get_html(URL, params=('page:', page))
            cars.extend(get_content(html.text))
        print(cars)
        
    else:
        print('ERROR!')
 
 
parse()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2021, 16:22
Ответы с готовыми решениями:

Ошибка ValueError: not enough values to unpack (expected 2, got 0)
Добрый день, друзья! Подскажите, пожалуйста, может, кто знает, программа выдает ошибку. ValueError: not enough values to unpack (expected...

Ошибка ValueError: too many values to unpack (expected 3)
Есть код: from PIL import Image im = Image.open("нтр.png") pixels = im.load() # список с пикселями x, y = im.size # ширина (x)...

ValueError: not enough values to unpack (expected 2, got 1)
Код: from collections import defaultdict def find_conflicts(n, relationships, opinions): adj_list = defaultdict(list) ...

8
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
20.01.2021, 16:27
Цитата Сообщение от Владислав2313 Посмотреть сообщение
ValueError: too many values to unpack (expected 2)
когда вы такое видите то о чем думаете? мне реально интересно, потому что я не могу представить как написать еще понятнее. Ну все ж написано и номер строки дан в ошибке...
0
1 / 1 / 0
Регистрация: 01.11.2019
Сообщений: 31
20.01.2021, 16:32  [ТС]
ValueError: слишком много значений для распаковки (ожидается 2)
В ошибке не указан номер строки. На сколько я понял, ошибка свидетельствует о том что парсер пытается спарсить слишком много страниц, как это исправить?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
20.01.2021, 17:33
Цитата Сообщение от Владислав2313 Посмотреть сообщение
В ошибке не указан номер строки.
Указан.
Спорим на ящик вискаря?

Ладно, заранее проигравший человек, (как говорил герой Паши Воли): ошибка в твоем способе передачи params.
Больше ничего не скажу. У тебя еще дофига ошибок. Весь код в принципе можно выкинуть.

Цитата Сообщение от Владислав2313 Посмотреть сообщение
ошибка свидетельствует о том что парсер пытается спарсить слишком много страниц,
Нет.

Добавлено через 22 минуты
Вот результат работы твоего кода, если в нем исправить params и return, который стоит не там.
Python
1
2
3
4
5
6
7
8
9
10
200
Парсинг страницы 1 из 4...
[]
Парсинг страницы 2 из 4...
[]
Парсинг страницы 3 из 4...
[]
Парсинг страницы 4 из 4...
[]
[]
0
1 / 1 / 0
Регистрация: 01.11.2019
Сообщений: 31
20.01.2021, 19:33  [ТС]
Изменил в 57 строке скобки:
Python
1
html = get_html(URL, params={'page': page})
Вроде бы работает.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
20.01.2021, 19:34
Цитата Сообщение от Владислав2313 Посмотреть сообщение
ValueError: слишком много значений для распаковки (ожидается 2)
мне не перевод нужен был, а твои мысли, то есть как именно ты понял эти простые слова. А строку всегда интепретатор показывает при падении ошибки
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
20.01.2021, 19:44
Цитата Сообщение от Владислав2313 Посмотреть сообщение
Вроде бы работает.
Как он может работать, если твои селекторы ничего не парсят и items == None?
Ты заметил что твой return в цикле стоит не по делу?

Или этот сайт не работает для РФ?
0
1 / 1 / 0
Регистрация: 01.11.2019
Сообщений: 31
21.01.2021, 21:03  [ТС]
Уже все работает.
Я напутал в класах самой html страницы. Код переписал.
Что получилось:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import requests
from bs4 import BeautifulSoup
import csv
ADDRESS = 'https://auto.ria.com'
 
URL = 'https://auto.ria.com/uk/newauto/marka-mitsubishi/'
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 OPR/72.0.3815.400', 'accept': '*/*'}
DOL=' $'
FILE = 'cars.csv'
 
def get_html(url, params=None):
    r = requests.get(url, headers=HEADERS, params=params, stream=True )
    return r
 
 
def get_pages_count(html):
    soup = BeautifulSoup(html, 'html.parser')
    pagination = soup.find_all('span', class_='mhide')
    if pagination:
        return int(pagination[-1].get_text())
    else:
        return 1
    
    print(pagination)
 
 
def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('div', class_='proposition')
    
    cars = []
    for item in items:
        cars.append({
            'title': item.find('h3', class_='proposition_name').get_text(strip=True),
            'link': ADDRESS+item.find('a').get('href'),
            'usd_price': item.find('span', class_='green bold size18').get_text(strip=True),
            'uah_price': item.find('span', class_='grey size13').get_text(strip=True),
            'city': item.find('div', class_='proposition_region').find_next('strong').get_text(strip=True),
            })
    return cars
 
 
def save_file(items, path):
    with open(path, 'w', newline='') as file:
        writer = csv.writer(file, delimiter=';')
        writer.writerow(['Марка', 'Ссылка', 'Цена в $', 'Цена в грн', 'Город' ])
        for item in items:
            writer.writerow([item['title'], item['link'], item['usd_price'], item['uah_price'], item['city']])
 
 
def parse():
    html=get_html(URL)
    if html.status_code == 200:
        cars = []
        pages_count = get_pages_count(html.text)
        for page in range(1, pages_count+1):
            print(f'Парсинг страницы {page} из {pages_count}...')
            html = get_html(URL, params={'page': page})
            cars.extend(get_content(html.text))
        save_file(cars, FILE)
        #print(pages_count)
        #get_content(html.text)
        print(cars)
    else:
        print('ERROR')
    
parse()
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
22.01.2021, 19:22
Цитата Сообщение от Владислав2313 Посмотреть сообщение
html=get_html(URL)
Имя html совершенно не отражает реальный объект, который возвращается.
В самой функции нет никаких проверок на ошибки.
Функции селекторов также никак не проверяются.
Словом, код одноразовый.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.01.2021, 19:22
Помогаю со студенческими работами здесь

ValueError: not enough values to unpack (expected 2, got 1)
Здравствуйте, прошу помочь с проблемой вырезки. Мне нужно в массиве определить три стоящих подряд числа, сумма которых максимальна, и было...

ValueError: not enough values to unpack (expected 2, got 1)
Подскажите пожалуйста, пишу простой код как в примере и не работает a ,b = map(int ,input().split()) print(a,b) я указываю...

ValueError: too many values to unpack (expected 2)
Я хотел "написать" викторину на python, почему же я поставил слово "написать"? Да потому что большую часть кода я скопировал и приписал...

ValueError: too many values to unpack (expected 2)
Здравия. file = read_file() for login, password in file: try: steam = Steam(login, password) id =...

ValueError: too many values to unpack (expected 2)
data_a= data_b= with open("example1.csv",'w') as file: writer=csv.DictWriter(file,fieldnames=) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru