我正在使用登录凭据来访问特定网页的价格。但是,我的代码提取的是“查看我的价格”而不是实际价格(好像我没有登录)。 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()
答案 0 :(得分:0)
尝试替换:
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)
答案 1 :(得分:0)
为什么我好像没有登录就提取数据?
您正在呼叫urlopen
,它发出另一个HTTP请求。该请求对通过selenium的先前登录请求一无所知,并且不包含在登录时设置的cookie。因此,返回的响应来自未登录的会话。