#python #selenium #beautifulsoup
#python #selenium #beautifulsoup
Вопрос:
Я создал скрипт, который вводит логин и пароль, нажимает кнопку входа, переходит на страницу поиска, вводит поиск и получает страницу результатов. Мне нужно сохранить этот URL результатов, чтобы я мог использовать Beautiful soup для извлечения необходимой мне информации. Однако я не могу использовать библиотеку запросов, поскольку я не знаю URL, пока не выполню поиск. Ниже приведен пример моей проблемы: я нажимаю кнопку отправки, и все в порядке, задержка загрузки страницы составляет 2 секунды. Затем я пытаюсь сохранить страницу результатов как переменную r и использовать soup для получения необходимой мне информации.
Однако с приведенным ниже кодом я получаю сообщение об ошибке ‘str’ объект не имеет атрибута ‘content’, поэтому я думаю, что это моя переменная r. Заранее спасибо.
submitbutton.click()
time.sleep(2)
r = browser.page_source
soup = bs4.BeautifulSoup(r.content,'lxml')
data = soup.find("div" , {"class": "specification"})
Комментарии:
1. просто используйте
r
вместоr.content
Ответ №1:
Предполагая, что (*1) submitbutton.click()
и r = browser.page_source
являются вызовами selenium, значение «r» представляет собой чистую строку — HTML-источник страницы на момент вызова .page_source
.
Как таковой, у него нет .content
атрибута (того же исключения, которое вы получили), и вам это не нужно — у вас уже есть html в нем, просто передайте его как есть конструктору BS:
soup = bs4.BeautifulSoup(r,'lxml')
*1 Предположение основано на теге вопроса и именах методов / атрибутов, в следующий раз будьте более четкими.
Комментарии:
1. Спасибо. Вы на 100% правы в предположениях и решении. Теперь работает отлично. Ценю это.