Python3 проблема def main()?

Benneric

Новичок
Пользователь
Июл 13, 2021
5
1
1
Ошибка в 17 строчке.

Код:
import requests
from bs4 import BeautifulSoup

# План:
# 1. Выяснить количество страниц.
# 2. Сформировать список url на страницы выдачи.
# 3. Собрать данные.

def get_html(url):
    r = requests.get(url)
    return r.text

def get_total_pages(html):
    soup = BeautifulSoup(html, 'lxml')

    pages = soup.find('div', class_='pagination-pages').find_all('a', class_='pagination-page')[-1].get('href')
    total_pages = pages.split('=')[2].split('&')[0]

    return int(total_pages)

def main():
    url = 'https://www.avito.ru/nizhnevartovsk/telefony?p=1&q=Apple'
    base_url = 'https://www.avito.ru/nizhnevartovsk/telefony?'
    page_part = 'p='
    query_part = '&q=Apple'

    total_pages = get_total_pages(get_html(url))

    for i in range(1, total_pages):
        url_gen = base_url + page_part + str(i) + query_part
        print(url_gen)

if __name__ == '__main__':
    main()


^
 

Вложения

  • 2021-07-14 (2).png
    2021-07-14 (2).png
    149,5 КБ · Просмотры: 4
  • 2021-07-14 (3).png
    2021-07-14 (3).png
    134,1 КБ · Просмотры: 4
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 669
477
83
какая у вас задача?

ошибка в строке 19, вы не можете tuple привести к int...
в tuple у вас не понятные символы...
и соответственно дальше в цикле for вы не можете использовать tuple, как аргумент у функции range...
 

Benneric

Новичок
Пользователь
Июл 13, 2021
5
1
1
2021-07-14 (4).png
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 669
477
83
ваш код не совпадает с тем, что вы выложили в теме...
запятой нет перед нулем...

и все же попрошу озвучить задачу...

upd
без запятой в total_pages значение 0...
 

Benneric

Новичок
Пользователь
Июл 13, 2021
5
1
1
ваш код не совпадает с тем, что вы выложили в теме...
запятой нет перед нулем...

и все же попрошу озвучить задачу...

upd
без запятой в total_pages значение 0...


Задача (Создаю парсер Авито) должен парсить айфоны. Сейчас ошибка на стадии получения списка урлов (url) встает на 12 строке в ошибку.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 669
477
83
я незнаю где вы там нашли такой класс pagination-pages, я что то не увидел...
вам нужно опираться на класс дива, где ссылка на телефон... по коду сайта это класс iva-item-titleStep-2bjuh
далее оттуда получаем ссылку...
далее переходим на след страничку, это класс pagination-root-2oCjZ
что вы в своем коде делаете я затрудняюсь сказать...

вот пример получения ссылок с первой страницы
Python:
from bs4 import BeautifulSoup
import requests

html = 'https://www.avito.ru/nizhnevartovsk/telefony?p=1&q=Apple'
r = requests.get(html)

soup = BeautifulSoup(r.text, 'lxml')


for i in soup.find_all('div', class_='iva-item-titleStep-2bjuh'):
    for j in i:
        print(j.get('href'))
 

Benneric

Новичок
Пользователь
Июл 13, 2021
5
1
1
я незнаю где вы там нашли такой класс pagination-pages, я что то не увидел...
вам нужно опираться на класс дива, где ссылка на телефон... по коду сайта это класс iva-item-titleStep-2bjuh
далее оттуда получаем ссылку...
далее переходим на след страничку, это класс pagination-root-2oCjZ
что вы в своем коде делаете я затрудняюсь сказать...

вот пример получения ссылок с первой страницы
Python:
from bs4 import BeautifulSoup
import requests

html = 'https://www.avito.ru/nizhnevartovsk/telefony?p=1&q=Apple'
r = requests.get(html)

soup = BeautifulSoup(r.text, 'lxml')


for i in soup.find_all('div', class_='iva-item-titleStep-2bjuh'):
    for j in i:
        print(j.get('href'))


Посоветуйте пару книг про Python )))
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 669
477
83
я прочитал одну книгу, и то не дочитал, это марк лутц изучаем питон...
далее форумы, статьи и документация...
и конечно практика, без нее никуда...

а так в любой книге есть основы языка, главное их понять, дальше уже двигайтесь в нужном вам направлении...
 
  • Мне нравится
Реакции: Benneric

Форум IT Специалистов