需要视频及源码笔记等资料可以回贴获取网盘密码(如失效请联系vx:csheima7) pn05
# 需求: # 1. 自动的打开浏览器,然后访问百度 # 2. 在百度的搜索框输入黑马程序员 # 3. 点击搜索按钮 import time
from selenium import webdriver
# 1. 自动的打开浏览器,然后访问百度 # 1.1 实例化一个浏览器对象 driver = webdriver.Chrome() # 1.2 访问百度 driver.get('https://www.baidu.com')
# 2. 在百度的搜索框输入黑马程序员 # 2.1 找到搜索输入框 keyword_input = driver.find_element_by_id('kw') # 2.2 在输入框中输入黑马程序员 keyword_input.send_keys('黑马程序员')
# 3. 点击搜索按钮 # 3.1 找到百度以下的输入框 search_btn = driver.find_element_by_id('su') # 3.2 点击1下 search_btn.click()
# 4. 退出浏览器 # 4.1 让程序暂停5秒钟 time.sleep(5) # 4.2 关闭整个浏览器 # 需求: # 爬取私人QQ邮件 # 1. 登录 # 2. 爬取 from selenium import webdriver from selenium.webdriver import ActionChains
# 登录 driver = webdriver.Chrome() driver.get('https://mail.qq.com/') # 隐式等待:出来了就不等了,没出来就一直等下去,超过10秒,就会抛出 driver.implicitly_wait(10) # 2. 点击账号密码登录按钮 # 2.1 切换到子页面子iframe login_frame = driver.find_element_by_id('login_frame') driver.switch_to.frame(login_frame) # 2.2 点击按钮 username_and_password_btn = driver.find_element_by_id('switcher_plogin') username_and_password_btn.click()
# 3. 输入用户名和密码 # 3.1 找到用户名的输入框 id的属性是u,并输入用户名 driver.find_element_by_id('u').send_keys('782555894') # 3.2 找到密码的输入框, id的属性是p,并输入密码 # driver.find_element_by_id('p').send_keys('你们的qq的密码') from settings import PASSWORD
driver.find_element_by_id('p').send_keys(PASSWORD)
# 4. 点击登录按钮 driver.find_element_by_id('login_button').click()
# 5. 找到收件箱的按钮并点击 # 5.1 回到默认页面 driver.switch_to.default_content() # 5.2 找到收件箱的按钮并点击 driver.find_element_by_id('folder_1_td').click()
# 6. 找到邮件列表所有的邮件 # 6.1 切换到子页面 main_frame = driver.find_element_by_id('mainFrame') driver.switch_to.frame(main_frame) # 6.2 获取所有的邮件 email_list = driver.find_elements_by_css_selector('table.M, table.F') # for email in email_list: # print(email.text) # 6.3 得到当前邮件的数量 N次 email_count = len(email_list) # 6.4 循环N次查看邮件的行为 # 6.4.1 存储当前的Tab页 handle = driver.current_window_handle # 6.4.2 关闭无用的Tab页 no_use_handle = driver.window_handles[1] driver.switch_to.window(no_use_handle) driver.close() driver.switch_to.window(handle) main_frame = driver.find_element_by_id('mainFrame') driver.switch_to.frame(main_frame)
for i in range(email_count): # 6.4.1 找到当前第i + 1个邮件 email_ele = driver.find_elements_by_css_selector('.toarea .F, .toarea .M') # 6.4.2 右击该邮件 # 右击某元素 # ActionChains(浏览器对象).context_click(你需要右击的对象).perform() ActionChains(driver).context_click(email_ele).perform() # 6.4.3 选择在新窗口打开 # 思路:找到点击按钮的列表中第2个对象 driver.find_elements_by_class_name('menu_item')[1].click() # 6.4.4 切换到第2个Tab页 email_handle = driver.window_handles[1] driver.switch_to.window(email_handle) # 6.4.5 获取当前页面的邮件内容 main_frame = driver.find_element_by_id('mainFrame') driver.switch_to.frame(main_frame) container = driver.find_element_by_id('mailContentContainer') print(container.text) # 6.4.6 关闭第2个Tab页 driver.close() # 6.4.7 切换回第1个Tab页 driver.switch_to.window(handle) # 6.4.8 切换回第1个Tab页的子页面 main_frame = driver.find_element_by_id('mainFrame') driver.switch_to.frame(main_frame)
driver.quit() driver.quit() |