def ua(browser='chrome', version='0.1.11'): """ 随机返回browser浏览器一条UA :param browser: 浏览器名字,包括如下:[chrome,opera,firefox,internetexplorer,safari] :param version: 爬取ua网页版本 :return: 字典类型 """ global browsers browser_type = ['chrome', 'opera', 'firefox', 'internetexplorer', 'safari'] b = { 'c': 'chrome', 'o': 'opera', 'ff': 'firefox', 'ie': 'internetexplorer', 's': 'safari' } browser = b.get(browser, browser) if browser not in browser_type: raise BrowserTypeError('浏览器类型异常,类型支持:[chrome,opera,firefox,internetexplorer,safari]') if browsers: return choice(browsers) cache = 'https://fake-useragent.herokuapp.com/browsers/' + version response = requests.get(cache) if response.status_code != 200: if version != '0.1.3': return ua(browser, '0.1.3') else: raise UAPageVersionError('版本问题,重新指定版本') json = response.json() browsers = json['browsers'][browser] return choice(browsers)
def ua(browser='chrome', version='0.1.11', update=False): """随机返回browser浏览器一条UA :param browser: 浏览器名字,包括如下:[chrome,opera,firefox,internetexplorer,safari] :param version: 爬取ua网页版本 :param update: 是否更新保存的UA文件数据 :return: 字典类型 """ global browsers save_path = r'C:\browser.json' if os.name == 'nt' else '/etc/browser.json' other_save_path = r'D:\browser.json' if os.name == 'nt' else '/home/browser.json' browser_type = ['chrome', 'opera', 'firefox', 'internetexplorer', 'safari'] b = { 'c': 'chrome', 'o': 'opera', 'ff': 'firefox', 'ie': 'internetexplorer', 's': 'safari' } browser = b.get(browser, browser) if browser not in browser_type: raise BrowserTypeError( '浏览器类型异常,类型支持:[chrome,opera,firefox,internetexplorer,safari]') if browsers: return choice(browsers) if (not update) and os.path.exists(save_path): with open(save_path, 'rb') as fp: json = pickle.load(fp) elif (not update) and os.path.exists(other_save_path): with open(other_save_path, 'rb') as fp: json = pickle.load(fp) else: print(f'第一次在线加载,加载保存的文件在:{save_path},以后都是离线加载,想改变请修改参数:update==True') cache = 'https://fake-useragent.herokuapp.com/browsers/' + version response = requests.get(cache) if response.status_code != 200: if version != '0.1.3': return ua(browser, '0.1.3') else: raise UAPageVersionError('版本问题,重新指定版本') json = response.json() try: with open(save_path, 'wb') as fp: pickle.dump(json, fp) except PermissionError: with open(other_save_path, 'wb') as fp: pickle.dump(json, fp) browsers = json['browsers'][browser] return choice(browsers)