【发布时间】:2019-08-10 23:13:05
【问题描述】:
首先,我要为我的代码外观缺乏可用示例而道歉。不幸的是,它包含访问我的大学可以使用的数据库的个人信息,所以我不能发布它。数据库的链接在这里: http://www.studiolegale.leggiditalia.it/#mode=home,__m=site.
现在,如果您没有合适的广告拦截器,您会看到垃圾邮件弹出窗口出现。我正在使用 Selenium 在 python 中构建一个刮板,问题似乎是我找不到关闭该窗口的方法。为了我的项目,我需要摆脱它,但我不知道如何。我尝试创建一个动作链来定位并单击“X”按钮,但 XPath 和所述按钮的 ID 都是动态的。
然后我注意到 X 按钮的 ID 总是包含“关闭”,所以我尝试编写类似
的内容spamlist = browser.find_element_by_xpath('//div[contains(@id, "close")] ')
spamlist.click
但无济于事。它没有给我任何错误,但它不会关闭窗口。我承认我有点初学者,但我真的想不出我做错了什么。我有什么明显的遗漏吗?
编辑 1.1 我被要求提供“关闭元素”按钮的 HTML 代码。这里是:
<div id="id70a13b6c7dclose70a13b6c7d" style="display: block !important; position: absolute !important; z-index: 10 !important; height: 70px !important; padding: 20px !important; margin-top: -20px !important; margin-left: -20px !important; box-sizing: border-box !important; left: 12px; right: auto; top: 12px; bottom: auto; transform: none; transform-origin: left top;"><div id="id70a13b6c7dclose-cross70a13b6c7d" style="display:block !important;height:30px !important;min-width:30px !important;background:#000 !important;border-radius:5px !important;border:2px solid #fff !important;white-space:nowrap !important;position:relative !important;-webkit-box-sizing:border-box !important;box-sizing:border-box !important;"><div id="id70a13b6c7dcross-container70a13b6c7d" style="overflow:visible !important;-webkit-box-sizing:border-box !important;box-sizing:border-box !important;"><div id="id70a13b6c7dcross70a13b6c7d" style="position:absolute !important;height:20px !important;width:20px !important;top:3px !important;left:3px !important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOAgMAAABiJsVCAAAADFBMVEUAAAD///////////84wDuoAAAAA3RSTlMAgGJiSVzhAAAAOElEQVQI12PQYGBqYNjLwP6AYb+D/AMG+Qv1DgzsX/8yMDD+/8LAwFB/AUxAuGAJsBKwYrA2sAEADzMWbZHdzhcAAAAASUVORK5CYII=) !important;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNLjcgMi43Yy0uNC0uNC0uNC0xIDAtMS40bC42LS42Yy40LS40IDEtLjQgMS40IDBMNyA1IDExLjMuN2MuNC0uNCAxLS40IDEuNCAwbC42LjZjLjQuNC40IDEgMCAxLjRMOSA3bDQuMyA0LjNjLjQuNC40IDEgMCAxLjRsLS42LjZjLS40LjQtMSAuNC0xLjQgMEw3IDlsLTQuMyA0LjNjLS40LjQtMSAuNC0xLjQgMGwtLjYtLjZjLS40LS40LS40LTEgMC0xLjRMNSA3IC43IDIuN3oiIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==), linear-gradient(transparent, transparent) !important;background-size:20px !important;overflow:visible !important;-webkit-box-sizing:border-box !important;box-sizing:border-box !important;"></div></div><div id="id70a13b6c7dcounter70a13b6c7d" style="display:none !important;text-align:center !important;position:absolute !important;min-height:30px !important;min-width:30px !important;color:#fff !important;font:small-caps bold 18px/30px courier new, sans-serif !important;overflow:visible !important;-webkit-box-sizing:border-box !important;box-sizing:border-box !important;"></div></div></div>
【问题讨论】:
-
我在普通窗口和隐身模式下都打开了它,但我没有收到任何弹出窗口...是顶部的“cookie策略”栏吗?
-
@Alichino:确实,当你用浏览器打开它时它不会显示它,但是当我使用 chromedrive 打开它时,它确实给了我这个问题。
-
嗯,我仍然没有得到弹出窗口,即使使用 chromedriver... 你能分享一下初始化 chromedriver 并导航到该页面的代码吗?
-
@Alichino 我可以给你第一部分的代码,问题是我不能给你导航到页面的代码,因为在我到达那里之前我执行了一个登录程序,它允许我来访问数据库。
-
好的,我明白了。你可以复制弹出窗口周围的 HTML 吗?尽可能多地来自页面源代码。
标签: python-3.x selenium selenium-webdriver web-scraping selenium-chromedriver