URL-адрес магазина Python BeautifulSoup после поиска

#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% правы в предположениях и решении. Теперь работает отлично. Ценю это.