zoukankan      html  css  js  c++  java
  • python实训day5

    今天上课主要是request的一些用法,下面是笔记:

    1.requests的post请求

    # 1、requests 的post请求
    import requests
    import re
    headers={
        'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36'
    }
    response=requests.get(url='https://github.com/login',headers=headers)
    print(response.text)
    把login页返回的cookies信息转换成字典
    login_cookies=response.cookies.get_dict()
    authenticity_token=re.findall(' name="authenticity_token" value="(.*?)"',response.text,re.S)[0]
    print(authenticity_token)
    #拼接请求头信息
    headers2={
        'Referer':'https://github.com/login',
        'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36'
    }
    #拼接请求体信息
    form_data={
        'commit':'Sign in',
        "utf-8":"✓",
        "authenticity_token":authenticity_token,
        "login":"852653835",
        "password":"******",
        "webauthn-support":"supported"
    }
    # 往session发送请求,携带请求头、请求体、login页的cookies信息
    response2=requests.post(url='https://github.com/session',data=form_data,headers=headers2,cookies=login_cookies)
    print(response2.status_code)
    with open('github.html','w',encoding='utf-8')as f:
        f.write(response2.text)
    
    
    #响应response
    import requests
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36',
    }
    #
    response = requests.get('https://www.github.com', headers=headers)
    print(response.status_code)  # 获取响应状态码
    print(response.url)  # 获取url地址
    print(response.text)  # 获取文本
    print(response.content)  # 获取二进制流
    print(response.headers)  # 获取页面请求头信息
    print(response.history)  # 上一次跳转的地址
    print(response.cookies)  # # 获取cookies信息
    print(response.cookies.get_dict())  # 获取cookies信息转换成字典
    print(response.cookies.items())  # 获取cookies信息转换成字典
    print(response.encoding)  # 字符编码
    print(response.elapsed)  # 访问时间
    

      2.requests的高级用法

    # 2、requests高级用法
    # https=http+ssl
    import requests
    #王音频地址发送get请求
    url='http://hc.yinyuetai.com/uploads/videos/common/3B7201685F78BF2954FEEB32CB6EBD82.mp4'
    response=requests.get(url,stream=True)  #stream=True把content设置为一个迭代器对象
    print(response.content)
    with open('music.mp4','wb')as f:
        for content in response.iter_content():
            f.write(content)
    

      3.selenium模块

    '''
    '''例1'''
    from selenium import webdriver  # 用来驱动浏览器的
    from selenium.webdriver import ActionChains  # 破解滑动验证码的时候用的 可以拖动图片
    from selenium.webdriver.common.by import By  # 按照什么方式查找,By.ID,By.CSS_SELECTOR,By.ClassName
    from selenium.webdriver.common.keys import Keys  # 键盘按键操作
    from selenium.webdriver.support import expected_conditions as EC  # 和下面WebDriverWait一起用的
    from selenium.webdriver.support.wait import WebDriverWait  # 等待页面加载某些元素
    #
    import time
    # 通过谷歌浏览器驱动打谷歌浏览器
    # 1、
    webdriver.Chrome(r'C:Users85265Downloadschromedriver.exe')
    chrome=webdriver.Chrome(r'C:Users85265Downloadschromedriver.exe')
    chrome.get('https://www.cnblogs.com/kermitjam')
    
    
    #2、
    chrome=webdriver.Chrome()
    若try出现异常
    try:
        驱动一参数对象,驱动二等待时间
        wait=WebDriverWait(chrome,10)
        访问百度
        chrome.get('https://www.baidu.com')
        查找input输入窗
        input_tag=wait.until(EC.presence_of_element_located(
            此处可以写一个参数
            (By.ID,'kw')))#没ID找class
        搜索一拳超人
        input_tag.send_keys('一拳超人')
        按键盘回车键
        input_tag.send_keys(Keys.ENTER)
        time.sleep(3)
    finally:
        chrome.close()
    
    
    from selenium import webdriver  # 用来驱动浏览器的
    from selenium.webdriver import ActionChains  # 破解滑动验证码的时候用的 可以拖动图片
    from selenium.webdriver.common.by import By  # 按照什么方式查找,By.ID,By.CSS_SELECTOR,By.ClassName
    from selenium.webdriver.common.keys import Keys  # 键盘按键操作
    from selenium.webdriver.support import expected_conditions as EC  # 和下面WebDriverWait一起用的
    from selenium.webdriver.support.wait import WebDriverWait  # 等待页面加载某些元素
    import time
    通过谷歌浏览器驱动打开谷歌浏览器
    1、
    webdriver.Chrome(r'C:Users85265Downloadschromedriver.exe')
    chrome=webdriver.Chrome(r'C:Users85265Downloadschromedriver.exe')
    chrome.get('https://www.cnblogs.com/kermitjam')
    
    
    #2、
    chrome=webdriver.Chrome()
    若try出现异常
    try:
        显示等待(等待某个元素加载),驱动一参数对象,驱动二等待时间
        wait=WebDriverWait(chrome,10)
        访问百度
        chrome.get('https://www.jd.com')
        查找input输入窗
        input_tag=wait.until(EC.presence_of_element_located(
            此处可以写一个参数
            (By.ID,'key')))#没ID找class
        搜索唐诗三百首
        input_tag.send_keys('唐诗三百首')
        根据class属性名查找标签
        search_button=wait.until(EC.presence_of_element_located((By.CLASS_NAME,'button')))
        search_button.click()
        time.sleep(8)
    finally:
        chrome.close()
    

      4.京东实例

    # 标签中首选id
    # 目的就是查找唯一的属性,来定位
    from selenium import webdriver  # 用来驱动浏览器的
    from selenium.webdriver import ActionChains  # 破解滑动验证码的时候用的 可以拖动图片
    from selenium.webdriver.common.by import By  # 按照什么方式查找,By.ID,By.CSS_SELECTOR
    from selenium.webdriver.common.keys import Keys  # 键盘按键操作
    from selenium.webdriver.support import expected_conditions as EC  # 和下面WebDriverWait一起用的
    from selenium.webdriver.support.wait import WebDriverWait  # 等待页面加载某些元素
    from selenium import webdriver
    import time
    # 通过谷歌浏览器驱动打开谷歌浏览器
    # 绝对路径有可能有.exe,有可能没有
    # 驱动浏览器的一种方式
    chrome=webdriver.Chrome(r'D:360安全浏览器下载chromedriver_win32chromedriver')
    # 驱动浏览器的另一种方式,将chromedriver.exe放入到python解释器的scipt文件中,;之后还要进行环境变量的配置。
    # 往博客园主页发送get请求
    try:
        # chrome.get('https://www.cnblogs.com/')
        # 访问百度
        # chrome是一个驱动对象,里面包含其他函数
        # 参数1:驱动对象。参数2:等待
        wait=WebDriverWait(chrome,10)
        chrome.get('https://www.jd.com/')
        # 查找input输入框
        #!!!!!!注意!!!!!EC.presence_of_element_located((By.ID,"kw"))里面是写的元组,
        #参数1.查找属性的方式,参数2:属性的名字
        input_tag=wait.until(EC.presence_of_element_located((By.ID,"key")))#  kw是id的属性
        # 3.搜索一拳超人
        input_tag.send_keys('唐诗三百首')
        # 4.按键盘回车键
        search_button=wait.until(EC.presence_of_element_located((By.CLASS_NAME,"button")))
        search_button.click()
        time.sleep(20)
        # 无论发生什么异常都会关闭浏览器
    finally:
        # 关闭浏览器
        chrome.close()
    

      5.作业

    from  selenium import webdriver
    import time
    driver=webdriver.Chrome()
    driver.maximize_window()
    try:
        driver.get('https://dig.chouti.com/')
        driver.implicitly_wait(10)
        time.sleep(5)
        login_btn=driver.find_element_by_id('login_btn')
        login_btn.click()
        time.sleep(2)
        phone=driver.find_element_by_class_name('login-phone')
        phone.send_keys('216635131365')
     
        pwd=driver.find_element_by_class_name('pwd-password-input')
        pwd.send_keys('ddgsgddg')
     
        login_submit=driver.find_element_by_class_name('btn-large')
        login_submit.click()
     
        time.sleep(20)
     
    except Exception as e:
        print(e)
     
    finally:
        driver.close()
    

      

     
  • 相关阅读:
    设置ActiveMQ的访问密码
    Java NIO SocketChannel套接字通道
    Java 8 基础API的一些小的该进
    Java 8 异常该进
    Java NIO Channel to Channel Transfers通道传输接口
    Java NIO Scatter / Gather
    mysql分表经验总结
    Java 8 Optional类深度解析(转)
    Java 8 文件操作(转)
    使用 Java8 Optional 的正确姿势(转)
  • 原文地址:https://www.cnblogs.com/jacob1998/p/11042784.html
Copyright © 2011-2022 走看看