urllib.request基本使用用法

(1)基本用法

    url = "http://www.baidu.com/"# 获取response对象response = urllib.request.urlopen(url)# 读取内容 bytes类型data = response.read()# 转化为字符串str_data = data.decode("utf-8")# 字符串转化为bytesstr_name = "baidu"bytes_name =str_name.encode("utf-8")

(2)url参数中含有汉字的需要转译

    url = "http://www.baidu.com/s?wd="name = "python中含有汉字"final_url = url + name#网址里面包含了汉字;ascii是没有汉字的;url转译#将包含汉字的网址进行转译encode_new_url = urllib.parse.quote(final_url,safe=string.printable)# 使用代码发送网络请求response = urllib.request.urlopen(encode_new_url)print(response)#读取内容data = response.read().decode()#保存到本地with open("02-encode.html","w",encoding="utf-8")as f:f.write(data)

(3)传入字典类型的参数

    url = "http://www.baidu.com/s?"params = {"wd":"中文","key":"zhang","value":"san"}# 字典类型转译成参数str_params = urllib.parse.urlencode(params)final_url = url + str_params# 将带有中文的url 转译成计算机可以识别的urlend_url = urllib.parse.quote(final_url,safe=string.printable)response = urllib.request.urlopen(end_url)data = response.read().decode("utf-8")print(data)

(4)添加header

第一种添加header的方式

    url = "https://www.baidu.com"# 添加请求头的信息headers = {# 浏览器的版本'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36','name':'chen'}# 创建请求对象request = urllib.request.Request(url, headers=headers)

第二种添加header的方式:动态添加

    url = "https://www.baidu.com"# 创建请求对象request = urllib.request.Request(url)# 动态添加请求头信息request.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36")# 请求网络数据response = urllib.request.urlopen(request)data = response.read().decode("utf-8")# 获取到完整的urlfinal_url = request.get_full_url()print(final_url)with open("baidu.html", "w", encoding="utf-8") as f:f.write(data)# 获取请求头的信息request_headers = request.headersprint(request_headers)user_agent = request.get_header('User-agent')print(user_agent)# 响应头print(response.headers)

(5)使用代理

    url = 'https://www.cnblogs.com/chenshy'# 添加代理proxy = {'http': '119.102.25.91:9999'}# 代理处理器proxy_handler = urllib.request.ProxyHandler(proxy)# 创建自己的openeropener = urllib.request.build_opener(proxy_handler)# 拿着代理ip发送请求data = opener.open(url).read().decode("utf-8")print(data)

(6) cookie

a.在头部添加cookie

    url = 'https://www.yaozh.com/member/'headers = {'User_Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36','Cookie':'acw_tc=707c9fd115550786016938465e492bb70702a65dacd78c0969a841171ddf8d; PHPSESSID=t4rb1af4vmks8gete5oqfd6ub7; _ga=GA1.2.521923122.1555078606; _gid=GA1.2.523976398.1555078606; Hm_lvt_65968db3ac154c3089d7f9a4cbb98c94=1555078606; MEIQIA_VISIT_ID=1JlnZOkmbJhJwfRjhyv0gTMf14i; MEIQIA_EXTRA_TRACK_ID=1JlnZL47AayFGs373mZAapsuPKv; yaozh_logintime=1555078687; yaozh_user=729821%09lifelover; yaozh_userId=729821; _gat=1; Hm_lpvt_65968db3ac154c3089d7f9a4cbb98c94=1555078691; yaozh_uidhas=1; yaozh_mylogin=1555078693; acw_tc=707c9fd115550786016938465e492bb70702a65dacd78c0969a841171ddf8d; MEIQIA_VISIT_ID=1JlnZOkmbJhJwfRjhyv0gTMf14i; MEIQIA_EXTRA_TRACK_ID=1JlnZL47AayFGs373mZAapsuPKv'}request = urllib.request.Request(url,headers=headers)response = urllib.request.urlopen(request)data = response.read().decode('utf-8')print(data)

b.登录之后获取cookie ,cookiejar的使用

import urllib.request
from http import cookiejar
from urllib import parsedef login():# 1.代码登录 获取cookie 带着cookies请求个人中心url = 'https://www.yaozh.com/login'# 登录的参数login_form_data = {'username':  'lifelover','pwd': 'chen19960319','formhash': 'F456373F7B','backurl': 'https%3A%2F%2Fwww.yaozh.com%2F'}# 发送登录请求cook_jar =  cookiejar.CookieJar()cookie_handler = urllib.request.HTTPCookieProcessor(cook_jar)opener = urllib.request.build_opener(cookie_handler)# 带着参数,发送post请求headers = {'User_Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}# 1.需要转译,转码  2.需要byte类型login_str = urllib.parse.urlencode(login_form_data).encode('utf-8')request = urllib.request.Request(url,headers=headers,data=login_str)# 如果登录成功,cookiejar自动保存cookieresponse = opener.open(request)# 带着cookie请求个人中心center = 'https://www.yaozh.com/member/'center_request = urllib.request.Request(center,headers=headers)response = opener.open(center_request)data = response.read().decode('utf-8')with open('test.html','w',encoding='utf-8') as f:f.write(data)

转载于:https://www.cnblogs.com/chenshy/p/10704185.html

request的基本使用用法相关推荐

  1. Request对象的一般用法

    Request是HttpRequest的派生类,主要的工作是从客户端获取信息,包括浏览器的种类,用户输入表单中的数据,Cookies中的数据和客户端认证等.在说Request对象的具体用法之前,先来说 ...

  2. request与response的用法

    必备知识 在学习这两个对象之前,我们应该已经有了http协议的基本了解了,如果不清楚http协议的可以看我的关于http协议的介绍.因为其实request和response的使用大部分都是对http协 ...

  3. 详解Django中Request对象的相关用法

    1.从Request对象中获取数据 我们在第三章讲述View的函数时已经介绍过HttpRequest对象了,但当时并没有讲太多. 让我们回忆下:每个view函数的第一个参数是一个HttpRequest ...

  4. request的获取路径用法小结

    request的学习之获取路径 通过request获取项目路径 request.getSchema()可以返回当前页面使用的协议,http 或是 https; request.getServerNam ...

  5. request库的基本用法

      request urllib 获取url request = requests.get("http://www...com") request = urllib2.Reques ...

  6. Request和response的用法总结

    Request 个我总结:只要记住 只要是有关于客户端请求的信息,都可以藉由它来取得,例如请求标头.请求方法.请求参数.使用者IP等等信息. 3.什么情况下为响应?什么情况下为请求? 简单一句话,请求 ...

  7. Request库的相关用法

    Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...

  8. python:Flask中request对象的简单用法

    因为在工作中需要将写好的Python程序改写成API接口供其他部门使用,所以这篇博客重点利用Flask的请求对象完成数据传输,对于更深层次的理论方面的内容,以后再补充: 本文只涉及本地服务器,再远程服 ...

  9. request.params 用法

    1.request.params怎么在两个页面传数据? request.params其实是一个集合,它依次包括request.querystring.request.form.request.cook ...

最新文章

  1. 从pandas resample说起,然后再超越resample,通过pd.Grouper、groupby、agg
  2. 49.什么是拼接技术?
  3. 2021-04-14 Matlab实现模糊聚类分析 FCM
  4. Py之logging:logging的简介、安装、使用方法之详细攻略
  5. .NET开发者必备的工具箱
  6. 在GridView开头插入自动编号的方法
  7. php怎么使用多个数据库,怎么在php项目中使用CI对多个数据库进行操作
  8. 关于struts线程问题 转
  9. Mybatis的批量更新 bug
  10. 用计算机教学体育,浅谈计算机在体育教学中的应用
  11. k3系统 中间层服务器,金蝶k3中间层服务器如何设置
  12. 计算机专业自我简介50字,2021年个人简历自我评价50字
  13. kmeans聚类算法_常用聚类算法综述
  14. oracle rman list,Oracle RMAN的show,list,crosscheck,delete
  15. 笑话段子手微信小程序源码自带内容采集随时有新内容
  16. 此时流泪,彼时花开。。。。
  17. protoc did not exit cleanly. Review output for more information报错
  18. 如何在linux系统中打开巨型帧
  19. 计算机硬件和工作原理,计算机硬件及基本工作原理ppt课件.ppt
  20. canvas塔防小游戏-保卫大司马

热门文章

  1. 全方位揭秘!大数据从0到1的完美落地之HDFS的工作机制
  2. int最大值,最小值的获取
  3. 让强大的EmEditor支持神奇的Python作为内置的宏脚本(一)
  4. linux文件系统变成只读,Linux文件系统变成只读解决办法
  5. MinIO is already stopped的解决方案
  6. 51单片机基础之DHT11温湿度传感器
  7. Sublime text 3手把手使用教程(附带配置完成安装包)
  8. dev-CPP快捷键
  9. linux下挂载优盘脚本,一种linux系统下自动挂载U盘的方法与流程
  10. Boost Interleaved PFC和Bridgelss Boost PFC拓扑介绍以及仿真分析