urllib的基本使用——python

使用urllib来获取百度页面的源码

import urllib.request
  1. 定义一个url,这个url就是你要访问的地址

url1 = 'www.baidu.com'
  1. 模拟浏览器向服务器发送请求

response = urllib.request.urlopen()
  1. 获取响应中的页面的源码

content = response.read()
  1. 打印数据

print(content)

执行后,可以看到结果

可以发现,read返回的是字节形式的二进制数据

所以需要将二进制的数据转换成字符串 二进制 》》 字符串 (解码)

此时需要用到decode(‘编码的格式’)

改进后的代码为

import urllib.request
url1 = 'https://www.baidu.com/home'
response = urllib.request.urlopen(url1)
content = response.read().decode('utf-8')
print(content)

urllib的一个类型和六个方法

import urllib.request
url1 = 'https://www.baidu.com/home'
response = urllib.request.urlopen(url1)
print(type(response))

可以发现response是HTTPResponse的类型

一个一个字节去读:

contenrt = response.read()

返回多少个字节去读:

contenrt = response.read(7) #此处返回7个字节

读取一行:

content = response.readline()

一行一行的读

content = response.readlines()

返回状态码:

print(response.getcode())#返回200 证明没有错

返回的是url的地址

print(response.geturl())

获取的是一个状态信息

print(response.getheaders())

urllib下载

在python中,可以使用urlib.request.urlretrieve(url,文件名)来下载网页

import urllib.request
url_page = 'http:www.baidu.com'
urllib.request.urlretrieve(url_page,'baidu.html')

可以看到,此处生成了一个baidu.html

文件

同样,这种方法也适用于图片和视频

url的组成可以分成:协议 主机 端口号 路径 参数 锚点

协议protocol:一般为http或https

域名hostname:一个URL中,也可以使用IP地址作为域名使用

端口port:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。

端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口

虚拟目录path:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分

虚拟目录也不是一个URL必须的部分

文件名;parameters:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。

文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

锚fragment:从“#”开始到最后,都是锚部分。

锚部分也不是一个URL必须的部分

参数query:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

注意: URL 只能使用 ASCII 字符集来通过因特网进行发送。 也就是说URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号 。

_urllib_get请求的quote方法

如果想将中文转换成 unicode编码的格式,我们需要依赖于urllib.parse方法实现

如果将此处的url中的周杰伦输入到py中执行,发现会报错,因为py中只可以执行0-128中的ASCII码,所以此时需要将此中文转换成unicode格式

import urllib.parse
name = urllib.parse.quote('周杰伦')
print(name)

此时打印出来的就是周杰伦的unicode编码

此时,如果出现多个中文,需要将其一一转换成Unicode编码,则需要输出多次urllib.parse.quote()语句此时可以使用urlencode方法


urlencode方法

如果有多个中文需要转换成Unicode编码 可以使用该方法


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_maisui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值