-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest2.py
More file actions
91 lines (78 loc) · 3.19 KB
/
test2.py
File metadata and controls
91 lines (78 loc) · 3.19 KB
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
import selenium
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time, os
# import qrcode
browser = webdriver.Chrome()
def user_login():
browser.get("https://www.xuexi.cn/")
# login_iframe = browser.find_elements_by_tag_name('iframe')[-2]
# browser.switch_to.frame(login_iframe)
# qr_element = browser.find_element_by_css_selector("#qrcode img")
# browser.execute_script("arguments[0].scrollIntoView();", qr_element)
print("等待扫码登录")
# while True: # FIXME 这里需要用命令行显示qr_str并扫码登录
# time.sleep(1)
# if "login" not in browser.current_url:
# print("登录成功")
# return
def read_news():
browser.get("https://www.xuexi.cn/")
WebDriverWait(browser, 60).until(EC.presence_of_element_located((By.TAG_NAME, 'div')))
time.sleep(10)
news = browser.find_elements_by_css_selector(".text-link-item-title")
print(len(news))
cnt = 1
for element in news[5:15]: # 读5-15条新闻
print("开始读第{}条新闻".format(cnt))
cnt = cnt + 1
try:
browser.execute_script("arguments[0].scrollIntoView();", element)
element.click()
browser.switch_to.window(browser.window_handles[0])
browser.switch_to.window(browser.window_handles[-1])
for _ in range(100):
ActionChains(browser).key_down(Keys.DOWN).perform()
time.sleep(0.2)
browser.close()
browser.switch_to.window(browser.window_handles[0])
except selenium.common.exceptions.ElementNotVisibleException as e:
print(e)
pass
def watch_video():
browser.get("https://www.xuexi.cn/")
browser.find_element_by_link_text("学习电视台").click()
# 关闭主标签页
browser.switch_to.window(browser.window_handles[0])
browser.close()
browser.switch_to.window(browser.window_handles[0])
# 切换到"第一频道"
browser.find_element_by_link_text("第一频道").click()
# 关闭主标签页
browser.switch_to.window(browser.window_handles[0])
browser.close()
browser.switch_to.window(browser.window_handles[0])
time.sleep(5) # 等待js运行完毕
videos = browser.execute_script('return $("div.word-item")')
video_flag = False
cnt = 1
for video in videos:
video_flag = not video_flag
if video_flag:
print("开始看第{}条视频".format(cnt))
cnt = cnt + 1
video.click()
browser.execute_script("arguments[0].scrollIntoView();",
browser.execute_script('''return $("div:contains('>>')")[5]'''))
time.sleep(60)
browser.switch_to.window(browser.window_handles[-1]) # 关闭当前标签页
browser.close()
browser.switch_to.window(browser.window_handles[0])
if __name__ == "__main__":
# user_login()
read_news()
# watch_video()