请求方法request

import urllib.request
url = "https://blog.csdn.net/fengxinlinux/article/details/77281253"
# 打开网页,读取所有内容,注意read出来的是bytes类型的数据
respons = request.urlopen(url=url).read()
# 数据持久化,将读取出来的数据保存在本地
with open("./csdn.html","wb") as fp:
fp.write(respons)
print("数据下载成功")

编码parse中的quote方式

import urllib.request
import urllib.parse
# 用户输入搜索的关键字
choice = input("请输入您要查询的关键字>>>:").strip()
# 对关键字进行编码,url不可以出现非ASCII编码的字符数据
Keyword = urllib.parse.quote(choice)
# 将编码后的搜索条件拼接到url上
url = "http://www.baidu.com/s?wd={}".format(Keyword)
# 请求网址
response = urllib.request.urlopen(url=url)
# read取出相应数据,读取出来的是bytes类型的数据
html = response.read()
# 数据持久化,保存到本地
with open("./关键字搜索.html","wb")as fp:
fp.write(html)
print("下载完成")

UA伪装

import urllib.request
import urllib.parse
# 用户输入搜索的关键字
choice = input("请输入您要查询的关键字>>>:").strip()
# 对关键字进行编码,url不可以出现非ASCII编码的字符数据
Keyword = urllib.parse.quote(choice)
# 将编码后的搜索条件拼接到url上
url = "https://www.baidu.com/s?wd={}".format(Keyword)
# 伪装浏览器
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
# 自定制请求对象,加入请求头
request_obj = urllib.request.Request(url=url,headers=header)
# 对我们自定制的请求对象发起请求
response = urllib.request.urlopen(request_obj)
# read取出相应数据,读取出来的是bytes类型的数据
print(response.read())

POST请求

Ajax请求

抓取百度翻译结果

# post请求
# 抓取百度翻译的翻译结果
# 百度翻译基于Ajax发起的请求
import urllib.request
import urllib.parse
import json
# 用户输入要翻译的关键字
choice = input("请输入您要翻译的关键字>>>:").strip()
# 在网页中用开发者工具找到Ajax请求的真实网址
url = "https://fanyi.baidu.com/sug"
# 构建请求参数
data = {
'kw':choice,
}
# 对参数进行编码处理,返回值为str,kw=%E5%93%88
data = urllib.parse.urlencode(data)
# 将编码后的结果转换成bytes类型
data = data.encode()
# 发起post请求,经过处理后的data就是post请求携带的参数,返回值为bytes类型
response = urllib.request.urlopen(url=url,data=data)
# 将bytes解码
json.loads(response.read())

最新文章

  1. WebService的使用
  2. Caffe源码解析5:Conv_Layer
  3. dig 常用的域名查询工具
  4. gauss消元
  5. 关于actionscript中新建一个sprite,设置大小(宽高)的问题。
  6. Node.js 学习(三) NPM 使用介绍
  7. Jsoup代码解读之四-parser
  8. raphael入门到精通---入门篇之总览
  9. ECMAScript 6 笔记(三)
  10. Git-多人协作
  11. 【原创】java NIO FileChannel 学习笔记 FileChannel 简介
  12. python Django注册页面显示头像
  13. ArrayList与Vector的区别
  14. 把List<string>集合,编程string,并以“,”号分割
  15. iOS 关于监听手机截图,UIView生成UIImage, UIImage裁剪与压缩的总结
  16. 利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator
  17. Y7000安装驱动显卡问题
  18. SQLite相关异常
  19. gooreplacer 很好用
  20. 【转】 g++编译时对'xxxx'未定义的引用问题(undefined reference to)

热门文章

  1. Istio技术与实践02:源码解析之Istio on Kubernetes 统一服务发现
  2. html5手机网页开发,中文输入法下软键盘遮挡输入框
  3. 几个主流浏览器 Window.open打开新窗口 、模拟a标签打开新窗口的 表现
  4. 【原创】大叔经验分享(79)mysql内存设置
  5. 9. Java分支语句之if...else
  6. JDK + Tomcat 安装 + 制作自定义镜像【第 3 篇 系统镜像】
  7. HTML导航条的制作
  8. selenium在爬虫中的应用之动态数据爬取
  9. 16.Listener(监听器)
  10. 【转】在 Delphi 中创建 Linux 守护程序(服务进程)