这个问题已经有解决方案了: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]的問題……
[^1]: https://groups.google.com/d/msg/chromedriver-users/7wF9EHF2jxQ/Y2LJcVyIBgAJ
事实上之前已经解决了。。。但是我懒,没有更博。。