A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需要视频及源码笔记等资料可以回贴获取网盘密码(如失效请联系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

# 登录
# 1. 访问:https://mail.qq.com/
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()

1 个回复

倒序浏览
您需要登录后才可以回帖 登录 | 加入黑马