杭州网站爬虫:selenium自动获取定位
原创 2020-02-28 12:43:35

在使用selenium的时候,模拟手机端访问网页,某一些网站就会询问是否允许浏览器获取定位,这样的情况下,如果你不同意,这个弹框就一直在,怪影响美观的!

为了解决这个问题,小编开始展开了自救之道,于是就有了下面的研究成果。

有的时候由于网站会获取你的位置信息,一直会弹出一个框问你是否同意,这个框对你的脚本运行没有任何影响,所以只要在headless下运行就看不见了,如果你希望弹框消失,就得点击下允许或禁止。
在这里小编提供一个代码自动允许的方法:
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-infobars')
chrome_options.add_argument('--hide-scrollbars')
chrome_options.add_argument('--ignore-certificate-errors')
prefs = {
    'profile.default_content_setting_values': {
        # 也可以这样写,两种都正确
        # 'profile.default_content_settings': {
        # 'images': 2,  # 不加载图片
        # 'javascript': 2,  # 不加载JS
        # "popups": 0,
        # 'notifications': 2
    },
    'download.default_directory': '/home/',
    'profile.managed_default_content_settings.popups':0,
    # 是否允许获取地址定位 0不允许 1允许
    "profile.default_content_setting_values.geolocation": 1,
}
chrome_options.add_experimental_option("prefs", prefs)

geolocation设置为1,就是代表自动同意网站获取你的地理位置。
设置为2就是禁止。