今天上课主要是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()