Icebound

icebound-area

selenium中window.chrome的问题

这个问题已经有解决方案了:https://groups.google.com/g/chromedriver-users/c/7wF9EHF2jxQ/m/Y2LJcVyIBgAJ?pli=1

这学期选了一门课,叫web搜索。然后上来就让写爬虫。这里记录一个之前没有遇到过,而且现在也没有找到解决方案的问题。

我之前没有用过selenium,这次尝试用了一下。使用了chrome浏览器的webdriver驱动chrome。我用的chrome版本是80.0.3987.132,webdriver版本为80.0.3987.106。

启动时的配置:

chrome_opt=Options()
chrome_opt.add_argument('--window-size=1920,1080')
driver=webdriver.Chrome(chrome_options=chrome_opt)

然后浏览器正常启动,没什么问题,爬取也没事。

然而,如果我们关闭显示窗口,使用这样的配置:

chrome_opt.add_argument('--headless')
chrome_opt.add_argument('--disable-gpu')
chrome_opt.add_argument('--window-size=1920,1080')  
driver=webdriver.Chrome(chrome_options=chrome_opt)  

我发现网页弹了个窗,表示浏览器不支持???查了半天,发现网站判断chrome浏览器的方式为:

var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime || !!window.chrome.loadTimes);

等等 这个window.chrome是干嘛的?于是又查了查,这个是chrome浏览器提供的一个对象,可以操作得到加载时间等信息。关于这个的资料非常少,我也没有找到怎么解决。最后研究了好久,确认如果使用–headless这个设置,window.chrome就会是undefined。。蜜汁问题

在这里把问题记下,待解决吧

    1. icebound说道:

      事实上之前已经解决了。。。但是我懒,没有更博。。