前言

最近在学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 requests
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import random

# 定义API的地址
api_url = "请填写api"

# 创建一个Edge浏览器驱动器
driver = webdriver.Edge()

# 打开Bing搜索页面(PC端)
driver.get('https://www.bing.com')

# 等待一段时间以确保页面加载完成
time.sleep(2)

# 存储一言结果的列表
one_words = []

# 调用API获取50次一言
for _ in range(8):
# 发送GET请求获取一言
response = requests.get(api_url)

# 检查响应状态码
if response.status_code == 200:
# 解析JSON数据
data = response.json()

# 获取一言内容
vhan_content = data['data']['vhan']

# 打印并存储一言内容
print(vhan_content)
one_words.append(vhan_content)




# //前30次在PC端搜索
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()

# 打开Bing搜索页面(PC端)
driver.get('https://www.bing.com')

# 等待一段时间以确保页面加载完成
time.sleep(2)

# 在浏览器中打开开发者工具
pyautogui.press('f12')
time.sleep(2) # 等待开发者工具打开

# 模拟 Ctrl+Shift+M 快捷键以切换到移动设备模式
pyautogui.hotkey('ctrl', 'shift', 'm')


driver.quit()