爬虫之网页下载器urllib和requests

网页下载器是将URL对应的网页以html的形式下载到本地存储成一个本地文件或字符串。

1. urllib使用方法:
(1)处理 get 请求。不传 data,则为 get 请求
import urllib
from urllib.request import urlopen
from urllib.parse import urlencode
url=‘http://127.0.0.1:1990/login’
data={“username”:“admin”,“password”:123456}
req_data=urlencode(data)
#将字典类型的请求数据转变为url编码
res=urlopen(url+’?’+req_data)
#通过urlopen方法访问拼接好的url
res=res.read().decode()
#read()方法是读取返回数据内容,decode 是转换返回数据的bytes格式为str
print(res)

(2)处理 post 请求,如果传了 data,则为 post 请求
import urllib
from urllib.request import urlopen
from urllib.request import Request
from urllib.parse import urlencode
url=‘http://127.0.0.1:1990/login’
data={“username”:“admin”,“password”:123456}
data=urlencode(data)
data=data.encode(‘ascii’)
#将url编码类型的请求数据转变为bytes类型(二进制数据)
req_data=Request(url,data )
#将url和请求数据处理为一个Request对象,供urlopen调用
with urlopen(req_data) as res:
res=res.read().decode()
print(res)

2. requests 使用方法:
(1)处理 get 请求
import requests
url=‘http://127.0.0.1:1990/login’
data={“username”:“admin”,“password”:123456}
res=requests.get(url, data)
#直接用requests.get(url, data)即可,其中.get表示为get方法,不需要对字典类型的data进行处理
res=res.text
#text方法是获取到响应为一个str,也不需要对res进行转换等处理
res=res.json() #当返回的数据是json串的时候直接用.json即可将res转换成字典
print(res)

(2)处理 post 请求
import requests
url=‘http://127.0.0.1:1990/login’
data={“username”:“admin”,“password”:123456}
res=requests.post(url, data)
res=res.text
res=res.json()
print(res)

(3)当传参格式要求为 json 串
import requests
url=‘http://127.0.0.1:1990/login’
data={“username”:“admin”,“password”:123456}
res=requests.post(url, json=data)
#只需要在这里指定data为json即可
res=res.text
res=res.json()
print(res)

(4)当传参含 cookie
import requests
url=‘http://127.0.0.1:1990/login’
data={“username”:“admin”,“password”:123456}
cookie={“sign”:“123abc”}
res=requests.post(url, json=data, cookies=cookie)
#只需要在这里指定cookies位cookie即可,headers,files等类似
res=res.json()
print(res)

3. 总结:python3 中 urllib 和 requests 的区别?
1、urllib 是 python 中自带的库,而 requests 则需要 pip install 安装;
2、构建参数方式不同。
urllib 需要先使用 urlencode 方法进行编码预处理,即将字典型请求转换为 url 编码,再通过 urlopen 方法访问拼接好的 url,读取返回数据先用 read 方法再用 decode 方法解码得到字符串;
而 requests 直接使用 get 方法,不需要对字典型数据进行转换处理,读取返回数据时直接用 text 方法获取字符串,无需 decode 解码。且可以直接用 json 方法将返回数据转换成字典;
3、处理响应的方式不同。
urllib 在处理消息头部、响应状态码以及响应正文时用 info()、getcode() 以及 read() 方法;
requests 则用 headers、status_code 以及 text 方法,方法名称与功能本身对应,便于理解和使用;
4、连接方式不同。
观察一下返回数据的头部信息 “connection”,
使用 urllib 时,“connection”:“close”,说明每次请求结束后会关闭 socket 通道;
使用 requests 时,“connection”:“keep-alive”,说明每次请求使用同一个 socket,消耗更少的资源。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一款可以复制别人开区网站的软件,输入地址即可下载整个网站源码程序,php asp 之类的动态程序无法下载。只能下载html htm 的静态页面文件! Teleport Ultra 所能做的,不仅仅是离线浏览某个网页,它可以从 Internet 的任何地方抓回你想要的任何文件。 它可以在你指定的时间自动登录到你指定的网站下载你指定的内容,你还可以用它来创建某个网站的完整的镜象,作为创建你自己的网站的参考。 可以简单快速保存你所喜欢的网页,是仿制网站的利! 如果遇到屏蔽了浏览保存网页,那么用网页整站下载是一种很理想的办法。 使用网页整站下载保存网页就简单多了,软件会自动保存所有的页面,但有时候由于软件功能过于强大,会导致很多不必要的代码、图片、js文件都一并保存到网页中 eleport Ultra 支持计划任务,定时到指定网站下载指定的内容,经由其保存的网站,保持源站点了的 CSS 样式、脚本功能,超链接也都替换为本地链接以方便浏览。 Teleport Ultra 实际就是一个网络蜘蛛(网络机人),自动从网络撷取特定的资料。使用它可以在本地创建完整的网站镜像或副本,共有6种工作模式: 1) 在硬盘中创建一个可浏览的网站副本; 2) 复制一个网站,包括网站的目录结构; 3) 在一个网站中搜索指定的文件类型; 4) 从一个中心站点探测每一个链接的站点; 5) 在已知地址下载一个或多个文件; 6) 在一个网站中搜索指定的关键字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值