Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.07.2016
Сообщений: 98
1

Странное поведение библиотеки requests

02.12.2019, 11:24. Показов 1163. Ответов 6

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Обнаружил странную особенность библиотеки requests. Заметил это случайно, когда делал для собственного образования парсер сайта avito с помощью библиотеки bs4. Ниже приведу скриншот. На первом скрине (белый фон) часть странички avito, где выделено два тега <p></p>. Библиотека requests читает эти теги странным образом, выкидывая первый открывающий тэг. Это есть на фтором скриншоте. А далее ошибка тянется в bs4 с соответствующими последствиями.
Миниатюры
Странное поведение библиотеки requests  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2019, 11:24
Ответы с готовыми решениями:

Авторизация на сайте посредством библиотеки requests
Здравствуйте, форумчане. Использую Python 3.9. Пытаюсь авторизоваться на сайте stoshka.ru с...

Проблема при использовании библиотеки requests
Всем привет! Только начал изучать Python и тут же столкнулся с проблемой. import requests...

странное поведение интерпретатора
у меня есть список из 50(допустим) ссылок. вида: truelinks = list('http://www.site1.ru/',...

Парсинг web страничек. библиотеки import requests
Добрый день. Хотел попробовать написать простенький парсер странички. Но почему то не работает этот...

6
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,359
Записей в блоге: 9
02.12.2019, 13:17 2
Какой html сервер отдал - такой библиотека и приняла. Возможно, браузер пофиксил неоткрытый тег.

Добавлено через 57 секунд
Попробуйте открыть страницу в браузере через "Исходный код страницы" - там открывающий тег скорей всего тоже будет отсутствовать.
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
02.12.2019, 13:24 3
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Возможно, браузер пофиксил неоткрытый тег.
Браузеры всегда показывают исключительно исправленный идеальный HTML.
Почему-то пользователи об этом даже не задумываются...
Пустой тег параграфа может быть записан как <p/>
Возможно, что даже одиночный закрывающий </p> не считается грубой ошибкой верстки. В HTML (в отличие от XHTML) вообще слишком много всего допускается.
0
0 / 0 / 0
Регистрация: 20.07.2016
Сообщений: 98
02.12.2019, 14:26  [ТС] 4
Последовал вашему совету и просмотрел исходный код. На удивление там ситуация совсем иная...
Миниатюры
Странное поведение библиотеки requests  
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
02.12.2019, 15:13 5
Цитата Сообщение от freeman86 Посмотреть сообщение
На удивление там ситуация совсем иная.
То есть вы еще не осознали, что код показанный пользователю (полностью отрендеренный - динамика!) и код который присылает сервер (статика!) - это две большие разницы?
Времена, когда эти два кода полностью совпадали, закончились в начале 2000-x.
0
0 / 0 / 0
Регистрация: 20.07.2016
Сообщений: 98
02.12.2019, 15:54  [ТС] 6
Так как я слабо связан с версткой и фронтом в целом, думал что динамика только там, где есть .js вставки.

Но все же, на последнем скрине как оказалось тег <p></p> вовсе не пустой. Куда же исчезает его содержимое, после считывания библиотекой requests? requests считывает исходный код, я правильно понимаю?
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
02.12.2019, 18:18 7
Цитата Сообщение от freeman86 Посмотреть сообщение
requests считывает исходный код
requests считывает поток байт, который прислал сервер. Что находится в этом потоке зависит только от сервера.
Скрипты могут вообще не присутствовать в явном виде на странице. Обычно в начало html помещаются ссылки на них, по которым браузер их скачивает.
Цитата Сообщение от freeman86 Посмотреть сообщение
динамика только там, где есть .js вставки.
js. код есть практически везде. Ну не делают сайтов без js. Только если это не статичная страничка, содержимое которой никогда не меняется. А кроме js сейчас и CSS умеет выполнять код, например, делать всякого рода динамические счетчики.
Цитата Сообщение от freeman86 Посмотреть сообщение
Но все же, на последнем скрине как оказалось тег <p></p> вовсе не пустой.
Это потому что браузер выполнил все содержащиеся в коде скрипты и отрендерил полный код страницы.
0
02.12.2019, 18:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2019, 18:18
Помогаю со студенческими работами здесь

Странное поведение
У меня есть модуль, называется module.py: def input(value='',mask = None, placeholder = None,...

Странное поведение IDE
Совсем новичок в питоне, да и в целом в программировании. Ситуация такая: вчера игрался с отправкой...

Странное поведение getcwd()
почему запуская проект из PyCharm, без особых настроек запуска print(os.getcwd()) это: ...

Странное поведение класса
У меня есть класс: def NumberType(): def __init__(self,value): self.value = value...

Странное поведение инкремента
почему при применении счётчика код выполняется дольше, чем при применении случайной выборки? т.е....

Странное поведение list.insert()
Написал функцию, которая должна перемешивать слова в строке и распечатывать результат и ключ, по...

Странное поведение при работе с массивами
Здравствуйте! Есть код - from tkinter import Tk, Canvas arr = *10]*10 print(arr) def...


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

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