python urllib.request模块的使用详解
作者:可爱的黑精灵 发布时间:2023-03-27 18:19:15
目录
urllib子模块
request模块
function request.urlopen()
class request.Request
python的urllib模块提供了一系列操作url的功能,可以让我们通过url打开任意资源。其中比较常用的就是request模块,本篇主要介绍requset模块。
urllib子模块
urllib.request 打开或请求url
urllib.error 捕获处理请求时产生的异常
urllib.parse 解析url
urllib.robotparser 用于解析robots.txt文件
robots.txt是一种存放于网站根目录下文本文件,用来告诉网络爬虫服务器上的那些文件可以被查看。又被成为robots协议,是一种约定俗成的协议。
request模块
function request.urlopen()
urlopen方法用来打开资源url,常用带参数形式urlopen(url,data=None),url:资源url,data:携带的数据。
方法的返回值始终为一个对象,并可以调用相应的方法获取返回的信息。其中对于http及https的url来说会返回一个http.client.HTTPResponse对象;
import urllib.request
# 我们用本地的一个简单html文件来测试
url = 'http://127.0.0.1:8848/chenjy/test.html'
req = urllib.request.urlopen(url)
print(req)
1. read() 返回服务器返回的原始数据;
import urllib.request
url ='http://127.0.0.1:8848/chenjy/test.html'
req = urllib.request.urlopen(url)
print(req.read())
我们可以再调用decode()方法来解码。
import urllib.request
url = 'http://127.0.0.1:8848/chenjy/test.html'
req = urllib.request.urlopen(url)
print(req.read().decode())
2.geturl() 返回获取资源的url;
创建一个测试页
import urllib.request
url = 'http://127.0.0.1:8848/chenjy/test.html'
req = urllib.request.urlopen(url)
print(req.geturl())
前端重定向
我们在页面中添加js脚本重定向页面window.location.href='http://127.0.0.1:8848/chenjy/test2.html';,会发现访问的时候会重定向到test2,但是geturl还是获取的重定向前的
后端重定向
我们启动一个项目并添加一个 * 当访问index.html的时候重定向到/ls/html/list.html页面,geturl获取的是重定向后的页面
@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
int index = target.lastIndexOf("index.html");
if (index != -1){
HandlerKit.redirect("/ls/html/list.html",request,response,isHandled);
}
}
import urllib.request
url = 'http://localhost:8088/ls/index.html'
req = urllib.request.urlopen(url)
print(req.geturl())
3.info() 返回页面的元信息;
import urllib.request
url = 'http://127.0.0.1:8848/chenjy/test.html'
req = urllib.request.urlopen(url)
print(req.info())
4.getcode() 返回页面的状态码;
import urllib.request
url = 'http://127.0.0.1:8848/chenjy/test.html'
req = urllib.request.urlopen(url)
print(req.getcode())
class request.Request
url请求类 Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
url:请求url
data:请求传参;bytes字节流
headers:请求头
origin_req_host:请求原始主机;不带端口
unverifiable:是否不可验证;
method :请求方法;如GET、POST、PUT等
import urllib.request
# 模拟iphone5请求百度手机版页面
url = 'https://www.baidu.com/'
user_agent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
headers = {
'User-Agent': user_agent
}
# 抓取page信息
req = urllib.request.Request(url, headers=headers,method='GET')
page = urllib.request.urlopen(req).read().decode('utf-8')
print(page)
来源:https://www.cnblogs.com/chenjy1225/p/11743847.html


猜你喜欢
- 安装官网下载http://ffmpeg.org/选择需要的版本在这个网址下载ffmpeg,https://github.com/BtbN/F
- 为了让鼠标移到小图上显示大图,我利用鼠标事件新建了一个层来显示大图.当然之前最好得到XY坐标取得当前鼠标的X,Y坐标:function&nb
- 前言matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。本文将以例子
- 使用pyserial进行串口传输一、安装pyserial以及基本用法在cmd下输入命令pip install pyserial注:升级pip
- 前言在实际工作中,我们很少会遇到一次性需要向页面中插入大量数据的情况,但是为了丰富我们的知识体系,我们有必要了解并清楚当遇到大量数据时,如何
- 项目地址:https://github.com/ray-project/ray1、简介Ray为构建分布式应用程序提供了一个简单、通用的API
- 本文为大家分享了mysql 5.7.17 winx64解压版安装配置方法,供大家参考,具体内容如下一、下载下载地址二、配置1. 解压下载的m
- <div style='display:none'> <script type="text/ja
- 代码如下:from PIL import Image #图像处理模块import numpy as npa = np.asarr
- 数据合并是数据处理过程中的必经环节,pandas作为数据分析的利器,提供了四种常用的数据合并方式,让我们看看如何使用这些方法吧!1.conc
- export default和export的区别export主要用于对外输出本模块变量的接口,一个文件就可以被理解为一个模块。export就
- 解决办法有很多: 1 . select * from 表 where
- 最近,需要对日志文件进行实时数据处理。一、简单的实时文件处理(单一文件)假设我们要实时读取的日志的路径为: /data/mongodb/sh
- 一个网站能切换不同的CSS风格大家应该都了解,像众所周知的腾讯在今年改版时也增加了切换皮肤的功能。根据时间自动调整站点风格是不错的想法,这种
- 一段查看ASP文件源码的ASP程序,需要的朋友可以试试!<% SUB PrintLine (ByVal
- 1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外
- 一、forEach1.1 遍历数组var array = [1,2,3,4,5,6];/*** currentValue 当前元素* ind
- 相关的依赖库在我的github网站上首先贴出代码:import solarfrom gradient import *from shadow
- 本期我们将展示一种对路面类型和质量进行分类的方法及其步骤。为了测试这种方法,我们使用了我们制作的RTK数据集。路面分类该数据集[1]包含用低
- 一、scrapy1.1 概述Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构