前言 最近在学python,尝试用python写一个自动获取微软积分的程序。但实际却没那么容易,卡在移动端获取积分好久了。 如果使用js写一个插件的话就很容易,但那就违背了只动一下手指的初衷,之后会尝试使用js完成的。
准备 搜索内容 我有两个账号,每天需要完成100次搜索任务,如果我将搜索内容储存在列表的话,一个月就得有三万个数据。使用随机数生成的话有被封号的风险,只能调用api了.
积分获取 我需要在运行完pc端搜索任务后切换到移动端,当该账号搜索完成后切换到下一个账号。
程序 问题 目前已经完成了pc端搜索. 我尝试模拟移动端登录,但是失败了。如果使用模拟按键按下F12+shift+ctrl+m切换到移动端的话,会有弹窗阻碍,我正尝试解决这个问题。 我至今找不到我的edge浏览器驱动器。
代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 import requestsfrom selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport timefrom selenium.webdriver.common.by import Byfrom selenium.webdriver.chrome.options import Optionsimport randomapi_url = "请填写api" driver = webdriver.Edge() driver.get('https://www.bing.com' ) time.sleep(2 ) one_words = [] for _ in range (8 ): response = requests.get(api_url) if response.status_code == 200 : data = response.json() vhan_content = data['data' ]['vhan' ] print (vhan_content) one_words.append(vhan_content) for i in range (5 ): search_box = driver.find_element(By.ID, 'sb_form_q' ) search_box.clear() search_box.send_keys(one_words[i]) search_box.send_keys(Keys.RETURN) time.sleep(2 ) driver.quit() mobile_emulation = { "deviceMetrics" : {"width" : 360 , "height" : 640 , "pixelRatio" : 3.0 }, "userAgent" : "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Mobile Safari/537.36" } options = Options() options.add_experimental_option("mobileEmulation" , mobile_emulation) driver = webdriver.Edge(options=options) for i in range (3 , 5 ): search_box = driver.find_element(By.ID, 'sb_form_q' ) search_box.clear() search_box.send_keys(one_words[i]) search_box.send_keys(Keys.RETURN) time.sleep(2 ) driver = webdriver.Edge() driver.get('https://www.bing.com' ) time.sleep(2 ) pyautogui.press('f12' ) time.sleep(2 ) pyautogui.hotkey('ctrl' , 'shift' , 'm' ) driver.quit()