繁体   English   中英

使用 Selenium (Python) 从 iFrame 中提取 cookies

[英]Extracting cookies using Selenium (Python) from an iFrame

我可以从网站上获得 cookies 就好了。 但我对聊天机器人正在使用的 cookies 感兴趣,例如有聊天机器人网站,例如: <www.kinguin.net><www.multibankfx.com><coschedule.com>

如果我们在这些网站上使用 go 并“检查元素”它们,然后在 cookies 下查看secure.livechat.inc(这是聊天机器人),将会有 1 或 2 个 Z55E7DD3016CE12F72 如下图所示

在这张图片中,我在名为 <www.kinguin.net> 的网站上查看聊天机器人的 cookies,我们可以在那里看到一个 cookie,即“__livechat”

所以这个cookie是我想使用selenium自动化和提取的。

我的以下代码返回网站上的所有 cookies 但缺少“_livechat”

import os, sys, json, codecs, subprocess, requests, time, string
from selenium import webdriver  
from selenium.webdriver.common.keys import Keys  
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup as bs
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Chrome()
host = 'kinguin.net'
driver.get("https://"+host)
cookies = driver.get_cookies()
driver.switch_to.default_content()
cookies = driver.get_cookies()
for item in cookies:
    print(item['name'])

更进一步,我的以下代码进入聊天机器人的 iFrame 并获取 cookies 但返回 null

driver.switch_to.default_content()
elementID = driver.find_element_by_id('chat-widget')
driver.switch_to.frame(0)
cookies = driver.get_cookies()
for item in cookies:
    print(item['name'])

@ble非常感谢-您建议的方式仅对我不想要的这个特定网站有用。 如果我无法在之前的查询中清楚地解释它,我很抱歉,但我想要一个针对大型网站数据集的通用解决方案。

例如,如果我们查看 <www.ebanx.com> 这里的聊天机器人是不同的,因此我将通过elementID = driver.find_element_by_id('hubspot-messages-iframe-container')搜索它

如果我在这个driver.switch_to.frame(elementID)之后使用你的代码

它给了我错误

NoSuchFrameException:消息:没有这样的框架:元素不是框架

通过这行代码,您可以找到 iframe 元素:

elementID = driver.find_element_by_id('chat-widget')

使用它切换到 iframe,您将能够使用您编写的代码收集 cookies

driver.switch_to.frame(elementID)

完成后,切换到默认内容

driver.switch_to.default_content()

该页面上有更多 iframe。 最简单的方法是使用唯一标识符(例如“id”或“name”)来查找元素,并将其存储在变量中,例如“elementID”。 我建议将其重命名为“iframe_element”,因为它不是 ID,您只是通过 ID 获取了元素。 此外,如果页面上没有太多 iframe( https://www.guru99.com/handling-iframes-selenium.html ),请避免按索引搜索( driver.switch_to.frame(0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM