第九课的笔记

第九课

1.定时工具库

"""
直接在 C:\Software\Anaconda3\Lib 目录下 的都是原生库  使用的话直接导入即可
三方库
    需要额外安装的  会被安装在 C:\Software\Anaconda3\Lib\site-packages
    因为使用的Anaconda  所以在这个目录下有很多的库

定时工具库
    pip python管理库工具
        可以来进行安装  删除  更新

    三方库来进行下载安装的时候
        这个库工具存在 https://www.pypi.org
        如果网络不好 请求网站的资源会比较慢一些的
        一般我们来下载的时候 会把下载网站设置国内的
            清华源
            豆瓣
            网易
            阿里...
        百度 搜 pip 国内镜像源
"""
import schedule
import datetime

def job():
    print(datetime.datetime.now(), '金海把手机收起来!!!!!!!!')
    return 1

# 制作任务
# every() 时间间隔  没有设置数值  默认值是1  每个1xx 做xx
#  时间类型 minutes
schedule.every().seconds.do(job_func=job)  # 这里传递的是函数  不要加小括号

# job_func=job
# job_func=job()  ====》 给job_func赋予的是 函数的运行结果  job_func=1
"""
函数名() ==== 调用函数
    执行函数内容的代码逻辑  会把函数的运行结果返回
"""
# print(job())

def job_with_argument(name, age):
    print(f"I am {name} age {age}")

schedule.every(10).seconds.do(job_with_argument, name="Peter", age=18)

# 开启  程序需要一值开启着
while True:
    # 开启定时操作
    schedule.run_pending()

2.定时发送邮件

# -*- coding: utf-8 -*-
# @Time    : 2023-9-7 11:08
# @Author  : xiaomu
# @Site    : 键盘敲烂 月薪过万!!!!
# @File    : 03_定时发送邮件.py
import smtplib   # 使用内容 工具库.内容名
# smtplib.SMTP_SSL
# from smtplib import SMTP_SSL  # 在库中导入内容
# SMTP_SSL
from email.mime.multipart import MIMEMultipart  # 构造邮件
from email.mime.text import MIMEText  # 构造正文

# 连接服务器 身份认证
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
connect.login('2301973297@qq.com', 'diugdbezslhbebdc')
sender = '2301973297@qq.com'
# 邮件构造设置函数
'''
收件人  不确定 一个人 可能多个人
主题  不确定
正文的内容  及其格式
'''

# print(type(10), type(10).__name__)
def send_email(receiver, subject, content, subtype):
    """
    :param receiver: 收件人  可能是字符串类型 也可能是列表类型 【列表的时候 需要使用逗号拼接成字符串】
    :param subject:  主题
    :param content:  发送的内容
    :param subtype:  内容类型   plain 纯文本   html超文本
    """
    # 判断收件人数据的类型
    if type(receiver) not in (str, list):
        # 抛出错误
        raise TypeError(f'excepted str or list of strings, found {type(receiver).__name__}')
    elif type(receiver) == list:
        receiver = ','.join(receiver)


    email = MIMEMultipart()
    email['From'] = sender
    email['To'] = receiver
    email['Subject'] = subject

    # 构造正文
    text = MIMEText(_text=content, _subtype=subtype)
    email.attach(text)

    # 发送
    connect.sendmail(from_addr=sender, to_addrs=receiver, msg=email.as_string())
    print(receiver, '接收完成')
    # connect.close()???  因为连接是在任务之外的


import schedule

# 制作待处理的任务
schedule.every(10).seconds.do(send_email,
                              receiver='2301973297@qq.com',
                              subject='努力就会有回报',
                              content='努力熊熊',
                              subtype='plain'

                              )

# 制定死循环 保证程序是开启的
while True:
    # 执行待处理的任务
    schedule.run_pending()

3.数据采集

"""
数据分析流程:
    1. 明确问题
    2. 提取数据
            数据库
            Excel文件、csv文件
            对接三方平台
            数据采集【爬虫】
    3. 数据清洗
    4. 数据分析
    5. 数据可视化 【柱形图  折线图 饼图】

数据采集【爬虫】
    蜘蛛程序【Spider】
    数据采集获取的都是服务器提供的

    数据爬虫流程
        1. 使用Python程序模拟浏览器发送请求 获取到网页数据 【使用的工具是selenium】
        2. 在网页数据中提取想要的资源信息 【CSS选择器的方式定位数据】
        3. 把数据存储到本地 【存储到数据库、存储Excel文件中】
selenium工具介绍
    自动化测试工具,利用代码驱动打开浏览器,利用代码模拟人为操作
    安装  pip install selenium
"""
# 导入驱动工具
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 驱动打开浏览器
browser = webdriver.Edge()
# 在浏览器中打开指定的网址
browser.get('https://movie.douban.com/top250')
# 休眠
time.sleep(5)

# 获取网页的页面数据 【HTML文档】
# print(browser.page_source)

# selenium中封装了 定位标签的方式
# browser.find_element()  定位到的是满足要求的第一个
# browser.find_elements()  定位到的是满足要求的所有 结果是一个列表
"""
by=By.ID, 定位方式 这些方式是被封装在工具库By类中
        默认是按照标签的ID属性 进行定位的
        By.CSS_SELECTOR 按照选择器进行定位
            全局选择器
            元素选择器
            属性选择器 
                id选择器  类选择器
            包含选择器
            结构选择器
value 该方式对应的数据值
"""
# value='.hd > a > span:first-child'
title_eles = browser.find_elements(by=By.CSS_SELECTOR, value='.hd > a > span:first-child')
print(len(title_eles))
# 标签数据.text 获取标签之间的内容
for ele in title_eles:
    print(ele.text)

4.selenium模拟人为操作

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
browser =webdriver.Edge()
browser.get('https://movie.douban.com/top250')
time.sleep(2)

page = 1
while True:
  movie_list=browser.find_elements(by=By.CSS_SELECTOR, value='.grid_view > li')
  for i in range(1, len(movie_list) + 1):
        movie_li = browser.find_element(by=By.CSS_SELECTOR, value=f'.grid_view > li:nth-child({i})')
        a_tag = movie_li.find_element(by=By.CSS_SELECTOR, value='.hd > a')
        a_tag.click()
        time.sleep(1)
        movie_name_span = browser.find_element(by=By.CSS_SELECTOR, value='span[property="v:itemreviewed"]')
        movie_name = movie_name_span.text
        runtime_span = browser.find_element(by=By.CSS_SELECTOR, value='span[property="v:runtime"]')
        runtime = runtime_span.text
        print(f'电影{movie_name}时长为{runtime}')

        browser.back()
        time.sleep(2)

  print(f'第{page}页获取完成')
  try:
      next_btn = browser.find_element(by=By.CSS_SELECTOR,value='.next>a')
      next_btn.click()

      page+=1
  except Exception as e:
      break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值