Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
1

Почему не работает?

11.06.2021, 20:28. Показов 4408. Ответов 17

Author24 — интернет-сервис помощи студентам
Здравствуйте, я написала код для парсинга, но почему-то он не работает от слова совсем. Ошибку я найти не могу( Помогите найти ошибку, пожалуйста. P.S.: какой бы бред я не писала в скобки marks.append({}) и после них (например вместо .get_text() писала .g или что-то в этом духе, у меня не выдавалась даже ошибка)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def get_html(url, params=None):
    r = requests.get(url, headers=HEADERS, params=params)
    return r
 
def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('ul', class_='header-menu')
 
    marks = []
    for item in items:
        marks.append({
            'title': item.find('a', class_='header-menu__link').get_text()
        })
        print(marks)
 
def parse():
    html = get_html(URL)
    if html.status_code == 200:
        get_content(html.text)
    else:
        print('Error')
 
parse()
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2021, 20:28
Ответы с готовыми решениями:

Почему смена текста работает только один раз? Что неправильно в коде и почему?
Нужно чтобы при щелчке мыши на поверхности кнопки текст метки Label изменялся на текст окна...

Почему не работает прыжок, и почему персонаж при ходьбе влево рвется а также раздваивается
import pygame clock = pygame.time.Clock() pygame.init() screen =...

Почему выводится в виде таблицы и почему не работает сортировка
почему выводится в виде таблицы? почему не работает сортировка? и как туда можно вставить классы...

Объясните, пожалуйста, почему так происходит в первом варианте и почему второй вариант работает корректно?
Я сидел и изучал списки и операции над ними. И написал вот такой простенький код: ...

17
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
11.06.2021, 21:08 2
Alina Zolotova, разбивайте на подзадачи проверяемый код, проверяйте присвоенные значения в процессе разработки.
Покрытие кода тестами, логирование (журналирование) происходящего, поможет Вам понять что происходит при выполнении инструкций и выражений в выполняемом синтаксисе языка. Или используйте дебаггер или отладчик в среде которой работаете.
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
11.06.2021, 21:40 3
Alina Zolotova, доставать хрустальный шар или дадите ссылку на сайт?
0
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
12.06.2021, 00:46  [ТС] 4
Цитата Сообщение от Welemir1 Посмотреть сообщение
Alina Zolotova, доставать хрустальный шар или дадите ссылку на сайт?
тут код взят с приватного сайта. Но я пробовала и с другими сайтами работать - код ничего не выдавал, хотя он вроде написан правильно

Добавлено через 30 минут
я бы хотела чтобы кто-то проверил код. Можно на любом другом, самое главное проверить, работает ли...

Добавлено через 1 минуту
полный код
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
import requests
from bs4 import BeautifulSoup
 
URL = '(заполнено)'
HEADERS = {'user-agent': '(заполнено)',
           'accept': '*/*'}
 
def get_html(url, params=None):
    r = requests.get(url, headers=HEADERS, params=params)
    return r
 
def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('ul', class_='header-menu')
 
    marks = []
    for item in items:
        marks.append({
            'title': item.find('a', class_='header-menu__link').get_text()
        })
        print(marks)
 
def parse():
    html = get_html(URL)
    if html.status_code == 200:
        get_content(html.text)
    else:
        print('Error')
 
parse()
Добавлено через 2 часа 3 минуты
Цитата Сообщение от AlexMarkov Посмотреть сообщение
Alina Zolotova, разбивайте на подзадачи проверяемый код, проверяйте присвоенные значения в процессе разработки.
Покрытие кода тестами, логирование (журналирование) происходящего, поможет Вам понять что происходит при выполнении инструкций и выражений в выполняемом синтаксисе языка. Или используйте дебаггер или отладчик в среде которой работаете.
AlexMarkov, я попробовала посмотреть через дебагер, но он ничего не выдаёт, абсолютно
1
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
12.06.2021, 02:41 5
Цитата Сообщение от Alina Zolotova Посмотреть сообщение
я бы хотела чтобы кто-то проверил код.
Нельзя проверить код, который парсит конкретный сайт без url этого сайта.
Если код не выдает никаких ошибок и никакой информации, значит парсер ничего не нашел на сайте по селекторам: в items пусто.
Почему пусто - тебе виднее: cелекторы твои.

P.S. Сам код написан неправильно, так как не проверяет корректность значений на None или отсутствие и поэтому даже никак не сигнализирует об этом.
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
12.06.2021, 10:00 6
Цитата Сообщение от Alina Zolotova Посмотреть сообщение
Можно на любом другом
это как? все сайты содержат твои селекторы чтоль? что то указано не верно, проблема в гет_контент

Цитата Сообщение от Alina Zolotova Посмотреть сообщение
через дебагер, но он ничего не выдаёт
а вот так не бывает, вы наверное не про дебаггер говорите
0
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
12.06.2021, 11:41  [ТС] 7
Garry Galler, мне просто нужно понять, проблема в самом коде или в том, что я неверно взяла данные с сайта

Добавлено через 9 минут
Welemir1, если проблема не в коде, то это хорошо, я просто побольше посижу и поработаю с данными из сайта. Просто я брала разные элементы с разных сайтов (вроде правильно), но код ничего не выдавал
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
12.06.2021, 13:11 8
Цитата Сообщение от Alina Zolotova Посмотреть сообщение
я брала разные элементы с разных сайтов (вроде правильно), но код ничего не выдавал
давай пример, который можно проверить, со ссылкой на сайт
1
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
12.06.2021, 21:11  [ТС] 9
Цитата Сообщение от Welemir1 Посмотреть сообщение
давай пример, который можно проверить, со ссылкой на сайт
Welemir1, ну вот, самый простой
http://icanhazip.com
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
12.06.2021, 21:30 10
Alina Zolotova, ты издеваешься? этот "сайт" возвращает даже не хтмл а всего лишь 1 строчку, какие ты там атрибуты искала?

Давай ссылку на нормальный сайт и какой код у тебя с ним не работает.
0
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
12.06.2021, 21:34  [ТС] 11
Цитата Сообщение от Welemir1 Посмотреть сообщение
Alina Zolotova, ты издеваешься? этот "сайт" возвращает даже не хтмл а всего лишь 1 строчку, какие ты там атрибуты искала?

Давай ссылку на нормальный сайт и какой код у тебя с ним не работает.
окей, вот например
https://www.dns-shop.ru/catalo... planshety/
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
12.06.2021, 21:41 12
Alina Zolotova, ты не читаешь что я тебе пишу? какой код на нем не работает? тот что выше?

Добавлено через 5 минут
твоя функция get_html конечно будет на нем работать если правилно хедеры передать.
твоя функция get_content конечно же не будет там работать
0
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
12.06.2021, 22:00  [ТС] 13
Цитата Сообщение от Welemir1 Посмотреть сообщение
Alina Zolotova, ты не читаешь что я тебе пишу? какой код на нем не работает? тот что выше?

Добавлено через 5 минут
твоя функция get_html конечно будет на нем работать если правилно хедеры передать.
твоя функция get_content конечно же не будет там работать
Welemir1, тот что ниже. Если взять например название планшета, чтобы его название высвечивало в итоге, то у меня ничего не выдаёт

Добавлено через 8 минут
вот код, как я парсила:
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
import requests
from bs4 import BeautifulSoup
 
URL = 'https://www.dns-shop.ru/catalog/17a8a05316404e77/planshety/'
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0',
           'accept': '*/*'}
 
def get_html(url, params=None):
    r = requests.get(url, headers=HEADERS, params=params)
    return r
 
def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('il', class_='catalog-product ui-button-widget')
 
    marks = []
    for item in items:
        marks.append({
            'title': item.find('a', class_='catalog-product__name ui-link ui-link_black').get_text()
        })
        print(marks)
 
def parse():
    html = get_html(URL)
    if html.status_code == 200:
        get_content(html.text)
    else:
        print('Error')
 
parse()
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
12.06.2021, 22:03 14
Лучший ответ Сообщение было отмечено Alina Zolotova как решение

Решение

тут у тебя проблема в том, что ты парсишь динамический сайт, который подгружает содержимое джаваскриптом. Реквестами тут не справиться, нужен селениум. Для реквестов хорошо подходят простые сайты или апи запросы, но не такие как ДНС
1
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
12.06.2021, 23:03  [ТС] 15
Цитата Сообщение от Welemir1 Посмотреть сообщение
тут у тебя проблема в том, что ты парсишь динамический сайт, который подгружает содержимое джаваскриптом. Реквестами тут не справиться, нужен селениум. Для реквестов хорошо подходят простые сайты или апи запросы, но не такие как ДНС
Welemir1, я училась по видео-уроку, тут человек парсит тоже (вроде) с динамическим сайтом с продажей авто. Только вот у него всё получается, а у меня ничего.
https://www.youtube.com/watch?v=J5sqWAqDPyE&t=75s

Добавлено через 52 минуты
Цитата Сообщение от Welemir1 Посмотреть сообщение
тут у тебя проблема в том, что ты парсишь динамический сайт, который подгружает содержимое джаваскриптом. Реквестами тут не справиться, нужен селениум. Для реквестов хорошо подходят простые сайты или апи запросы, но не такие как ДНС
Welemir1, спасибо, сейчас попробовала с другим сайтом это провернуть, всё вышло, код рабочий
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
13.06.2021, 02:19 16
Цитата Сообщение от Alina Zolotova Посмотреть сообщение
всё вышло, код рабочий
Код рабочий (с той же вероятностью, что и выигрыш в лотерею), но в целом неправильный.
Человек, который этот код приводил в видеоуроке должен был обязательно сказать, что это упрощенный пример и в реальности так никогда не пишите.
0
15 / 13 / 4
Регистрация: 13.05.2021
Сообщений: 158
15.06.2021, 22:03  [ТС] 17
Цитата Сообщение от Garry Galler Посмотреть сообщение
Код рабочий (с той же вероятностью, что и выигрыш в лотерею), но в целом неправильный.
Человек, который этот код приводил в видеоуроке должен был обязательно сказать, что это упрощенный пример и в реальности так никогда не пишите.
Garry Galler, почему? Что в нём не так?
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
16.06.2021, 17:11 18
Цитата Сообщение от Alina Zolotova Посмотреть сообщение
Что в нём не так?
Нет никаких проверок на ошибки.
В параллельном нашему миру, наверняка, есть вселенная, где ошибок никогда не бывает - в ней это код будет идеальным.
К сожалению наша вселенная несовершенна, в ней случаются ошибки, ошибки приносят убытки, а за такой код больно бьют по рукам.
0
16.06.2021, 17:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2021, 17:11
Помогаю со студенческими работами здесь

Почему то программа не работает. Не подскажите почему?
a=random(int) k=odd(a) for i=1 to 59 do if not (odd(a) xor k) then begin k=not k buf=inc(buf)...

Не работает изменение, не могу понять почему, Update не работает, ошибку выдает
Помогите, изменение с помощью button string u =...

Почему цикл for (java script) не работает в браузерах от гугла, яндекса, но работает в IE
Подскажите почему цикл for не выполняется в браузерах от гугла и хром, но выполняется в IE: изучая...

Почему не работает эхо клиент-сервер ? (на windows работает на linux нет :( )
Есть клиент сервер хотел написать такой клиент сервер чтоб он запускался и на windows и на linux...

Ноутбук работает только с Wi Fi роутера дома, в кафе не работает и везде. Почему?
Подскажите пожалуйста, почему у меня ноутбук с виндой 7, работает вай фай только дома с роутера. А...

Почему работает на Linux, но не работает на Windows или аномалии wi-fi адаптера
Из заголовка, уже возникает вопрос а такое вообще возможно? Купил на днях usb wi-fi адаптер, не...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru