Я использую учетные данные для доступа к ценам определенной веб-страницы. Тем не менее, мой код тянет «увидеть мою цену» вместо реальной цены (как будто я не вошел в систему). Драйвер сеанса 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
GodspeedYou77 16 Авг 2019 в 16:50

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)  
0
chitown88 16 Авг 2019 в 14:07

Почему он тянет данные, как будто я не вошел в систему?

Вы звоните urlopen, что делает еще один HTTP-запрос. Этот запрос ничего не знает о предыдущем запросе на вход в систему через selenium и не содержит куки, которые были установлены при входе в систему. Следовательно, ответ возвращается из сеанса, который не вошел в систему.

0
Corey Goldberg 16 Авг 2019 в 15:55