Я использую учетные данные для доступа к ценам определенной веб-страницы. Тем не менее, мой код тянет «увидеть мою цену» вместо реальной цены (как будто я не вошел в систему). Драйвер сеанса Chrome показывает, что я вошел в систему, и если я нажму Ctrl + U на странице, цена будет видна. Почему он тянет данные, как будто я не вошел в систему? Благодарю.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from bs4 import BeautifulSoup
from urllib.request import urlopen
import time
driver = webdriver.Chrome(executable_path=r"C:\Downloads\chromedriver_win32\chromedriver.exe")
driver.get('https://www.example.com')
driver.find_element_by_link_text("Sign In or Register").click()
driver.find_element_by_name('UserName').send_keys("usr")
time.sleep(3)
driver.find_element_by_name('Password').send_keys("pwd")
time.sleep(3)
driver.find_element_by_id("submitButton").click()
search = driver.find_element_by_name('q')
search.send_keys('Example Text')
WebDriverWait(search.send_keys(Keys.RETURN), 10)
time.sleep(10)
with urlopen(driver.current_url) as response:
soup = BeautifulSoup(response, 'html.parser')
pageList = soup.find('div', 'price').getText()
print(pageList)
driver.close()
2 ответа
Попробуйте заменить:
with urlopen(driver.current_url) as response:
soup = BeautifulSoup(response, 'html.parser')
pageList = soup.find('div', 'price').getText()
print(pageList)
С участием:
response = driver.page_source
soup = BeautifulSoup(response, 'html.parser')
pageList = soup.find('div', 'price').getText()
print(pageList)
Почему он тянет данные, как будто я не вошел в систему?
Вы звоните urlopen
, что делает еще один HTTP-запрос. Этот запрос ничего не знает о предыдущем запросе на вход в систему через selenium и не содержит куки, которые были установлены при входе в систему. Следовательно, ответ возвращается из сеанса, который не вошел в систему.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.