【发布时间】:2018-07-15 11:03:32
【问题描述】:
我一直在尝试从公司内部网站上抓取一些原始 XML 数据(出于安全目的,URL 被排除在外)。我目前正在使用 selenium 和 beautifulsoup 这样做(但我对任何其他选择持开放态度)。手动访问该站点时,系统会提示我输入用户名和密码的 javascript 浏览器警报(见图)。我尝试自动验证凭据如下(未通过身份验证):
def main():
#gets specified list of direct reports
# username:password@
url ="http://{username}:{password}@myURL.com"
driver.get(url)
html = driver.page_source
soup = BeautifulSoup(html, "lxml")
# parsing logic follows ...
但是,当脚本运行时,我仍然需要在 chromedriver 控制的浏览窗口中手动输入用户名和密码,然后程序的其余部分按预期运行..
有没有办法避免这种手动输入?我还尝试了有关 driver.alert 和向浏览器发送密钥和凭据的解决方案,但无济于事..(我知道这可能很困难,因为该站点无法在网络之外访问,感谢任何见解!)
编辑:我应该提一下这个方法在几周前还有效,但在 chrome 更新之后不再有效..
【问题讨论】:
-
如果换个角度解决问题呢?为什么要抓取内部站点?难道不能从信息源的其他地方获取数据吗?
-
我希望 :P 不幸的是,我们正处于时间紧缩状态,无法访问 API……这里的某些事情变得比应有的更加困难..
-
要么使用外部工具,如 autoit(如果是 windows),要么使用代理注入凭据,或使用扩展程序设置凭据,或启动已设置凭据的 chrome 配置文件,或执行 @987654322 @在页面中设置凭据。
标签: javascript python selenium authentication beautifulsoup