Python - 从当前浏览器操作和读取浏览器

标签 python authentication web-scraping

我正在努力寻找一种 python 方法,它允许您在当前使用的网络浏览器中读取数据。实际上,我正在尝试在本地控制的公司网页上下载大量数据数据框并将其实现到数据框中。问题是该网站有一个相当复杂的身份验证 token 过程,我无法使用 Selenium 使用大量网络驱动程序、请求、urllib 和使用各种用户参数的 cookielib 绕过该过程。我已经完全放弃了这方面的工作,因为我几乎可以肯定,身份验证过程比使用这些库可以轻松实现的要多得多。

但是,当我快速测试在已经使用 WebBrowser 登录的当前浏览器中打开一个新选项卡时,我确实设法绕过了所需的标记化过程。 .传统上,WebBrowser 不提供读取功能,这意味着即使可以打开页面,也无法将页面上的数据读取到 pandas 数据框中。这让我想到我可以使用 Win32com,打开浏览器,登录,然后运行脚本的其余部分,但是同样,Internet Explorer 的调度没有一般的读取能力,这意味着我无法将我想要的信息发送给 pandas .我很难过。有任何想法吗?

我可以获得必要的身份验证 token 脚本,但我确信在这方面发生任何事情之前需要一两周的时间。我显然更愿意在等待公司实际授权脚本的同时获得一些东西。

更新:我从公司收到了身份验证 token ,但是它需要在另一台我也无权访问的服务器上使用 python 包,主要是因为我在我的部门使用 Python 很奇怪。因此,上述内容仍然适用——需要一种方法来读取和操作打开的浏览器。

最佳答案

循序渐进

1) 使用 Selenium 启动浏览器。

2) 脚本应该开始等待通知您已获得所需页面并已登录的特定元素。

3) 您可以使用这个新的浏览器窗口手动登录页面。

4) 脚本检测到您位于所需页面并已登录。

5) 脚本以您喜欢的方式处理页面。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# start webdriver (opens Chrome in new window)
chrome = webdriver.Chrome()

# initialize waiter with maximum 300 seconds to wait.
waiter = WebDriverWait(chrome , 300)

# Will wait for appear of #logout element.
# I assume it shows that you are logged in.
wait.until(EC.presence_of_element_located(By.ID, "logout"))

# Extract data etc.

如果您使用 Chrome 用户的个人资料,可能会更容易。这样您就可以继续之前的 session ,因此您无需执行任何登录操作。

options = webdriver.ChromeOptions() 
options.add_argument("user-data-dir=FULL_PATH__TO_PROFILE")
chrome = webdriver.Chrome(chrome_options=options)
chrome.get("https://your_page_here")

关于Python - 从当前浏览器操作和读取浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46673644/

相关文章:

python - 如何使用 Selenium 浏览整个网站?

python - 如何检测 Pandas 时间序列中的间隙和连续周期

python - 这个网页登录Python脚本正确吗?

java - 如何使用unboundid SDK减少AD主机不可达时间的超时异常?

java - Spring SecurityContext 在错误页面上返回空认证

python - 使用scrapy导出多种格式的抓取数据

python - 动态改变 wx.TextCtrl 的大小

python - pySerial发送和接收多个数据

python - pyspark中导入多个py文件

python - scrapy-splash 事件内容选择器在 shell 中工作,但不适用于蜘蛛