为什么我的刮板拖动文本好像我没有登录?

时间:2019-08-16 13:50:45

标签: python selenium beautifulsoup screen-scraping

我正在使用登录凭据来访问特定网页的价格。但是,我的代码提取的是“查看我的价格”而不是实际价格(好像我没有登录)。 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 个答案:

答案 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。因此,返回的响应来自未登录的会话。