Проблема с некорректной работой bs4 BeautifulSoup
response = requests.get(main_page)
html = response.content
html
Выдает, соответственно, неформатированный html файл. И, казалось бы, BeautifulSoup должен сделать из этого структурированное дерево
soup = BeautifulSoup(html,'lxml')
soup
Однако результат все еще остается неструктурированным (html.parser, кстати, не был видел для программы, что странно, пришлось скачивать отдельно, но результаты оказались теми же). После этого я попробовал использовать этот кусок, чтобы проверить работает ли библиотека вообще:
soup.html.head.title
И все-таки текст она выдает заголовка, однако, тэги расположены прямо у краев строки, чего быть не должно:
<title>42 870 объявлений - Купить 1-комнатную или 2-комнатную квартиру в Москве, недорого - база объявлений ЦИАН</title>
При последующих попытках с soup.find программа вообще перестала что либо выдавать. Друзья, я не смог найти хоть немного похожую проблему, может кто-нибудь знает ответ на эту мистику?
В комментариях мне подсказали, что надо бы указать ссылку на сайт, поэтому вот фрагмент:
В обучающих целях использовал сайт циана:
main_page = 'https://www.cian.ru/cat.php?deal_type=sale&engine_version=2&offer_type=flat®ion=1&room1=1&room2=1'
response = requests.get(main_page)
html = response.content
soup = BeautifulSoup(html,'lxml')
soup
И html.content и soup выдают неструктурированные данные При попытке выгрузки оттуда по find ничего не происходит:
obj = soup.find('div', attrs={'class':"serp-item__price-col"})
Юпитер плюется и говорит, что переменная obj является NoneType
Ответы (2 шт):
Если правильно пронял суть вашей проблемы, то не получается избавится от тегов <title>
Как вариант решения данной проблемы то можно сделать так:
from bs4 import BeautifulSoup
import requests
main_page = 'https://www.cian.ru/cat.php?deal_type=sale&engine_version=2&offer_type=flat®ion=1&room1=1&room2=1'
response = requests.get(main_page)
html = response.content
soup = BeautifulSoup(html, 'html.parser')
print(soup.title.get_text())
Ответ выглядит следующим образом
42 309 объявлений - Купить 1-комнатную или 2-комнатную квартиру в Москве, недорого - база объявлений ЦИАН
Пример работы данного метода можно найти в документации тут.
Проблема оказалась проще, чем ожидалось. В общем, как я понял, проблема была не в библиотеке, а в самом питоне. Скорее всего терялись пакеты библиотеки из-за неправильной установки самого питона. При полном сносе языка и переустановке, соответственно переустановки самой библиотеки bs4 все заработало.