Python3之urllib库的使用总结

python爬虫-urllib,urllib3库的使用 理解虚拟机的使用 由于服务器的开发往往是基于linux系统的,例如Ubuntu,Centos等等,所以如果我们是windows操作系统的个人电脑,利用虚拟机来进行相关后端的学习是非常有好处的,这里只陈述在开发时物理机和虚拟机的python文件的逻辑关系。 本地windows物理机需要有python解释器,pycharm; pycharm是对本地文件进行编辑的; 虚拟Ubuntu机需要有python... 阅读详情

Urllib库是Python中的一个功能强大、用于操作URL,并在做爬虫的时候经常要用到的库。在Python2.x中,分为Urllib库和Urllib2库,Python3.x之后都合并到Urllib库中,使用方法稍有不同。本文介绍的是Python3中的urllib库。


什么是Urllib库

Urllib是Python提供的一个用于操作URL的模块,我们爬取网页的时候,经常需要用到这个库。

升级合并后,模块中的包的位置变化的地方较多。在此,列举一些常见的位置变动,方便之前用Python2.x的朋友在使用Python3.x的时候可以快速掌握。

常见的变化有:

  • 在Pytho2.x中使用import urllib2-------对应的,在Python3.x中会使用import urllib.request,urllib.error。
  • 在Pytho2.x中使用import urllib-------对应的,在Python3.x中会使用import urllib.request,urllib.error,urllib.parse。
  • 在Pytho2.x中使用import urlparse-------对应的,在Python3.x中会使用import urllib.parse。
  • 在Pytho2.x中使用import urlopen-------对应的,在Python3.x中会使用import urllib.request.urlopen。
  • 在Pytho2.x中使用import urlencode-------对应的,在Python3.x中会使用import urllib.parse.urlencode。
  • 在Pytho2.x中使用import urllib.quote-------对应的,在Python3.x中会使用import urllib.request.quote。
  • 在Pytho2.x中使用cookielib.CookieJar-------对应的,在Python3.x中会使用http.CookieJar。
  • 在Pytho2.x中使用urllib2.Request-------对应的,在Python3.x中会使用urllib.request.Request。

快速使用Urllib爬取网页

以上我们对Urllib库做了简单的介绍,接下来讲解如何使用Urllib快速爬取一个网页。
首先需要导入用到的模块:urllib.request

import urllib.request

在导入了模块之后,我们需要使用urllib.request.urlopen打开并爬取一个网页,此时,可以输入如下代码爬取百度首页(www.baidu.com),爬取后,将爬取的网页赋给了变量file:

>>>file=urllib.request.urlopen('www.baidu.com')

此时,我们还需要将对应的网页内容读取出来,可以使用file.read()读取全部内容,或者也可以使用file.readline()读取一行内容。

>>>data=file.read()    #读取全部
>>>dataline=file.readline()    #读取一行内容

读取内容常见的有3种方式,其用法是:

  1. read()读取文件的全部内容,与readlines()不同的是,read()会把读取到的内容赋给一个字符串变量。
  2. readlines()读取文件的全部内容,readlines()会把读取到的内容赋值给一个列表变量。
  3. readline()读取文件的一行内容。

此时,我们已经成功实现了一个网页的爬取,那么我们如何将爬取的网页以网页的形式保存在本地呢?
思路如下:

  1. 爬取一个网页并将爬取到的内容读取出来赋给一个变量。
  2. 以写入的方式打开一个本地文件,命名为*.html等网页格式。
  3. 将步骤1中的变量写入该文件中。
  4. 关闭该文件

我们刚才已经成功获取到了百度首页的内容并读取赋给了变量data,接下来,可以通过以下代码实现将爬取到的网页保存在本地。

>>>fhandle=open("./1.html","wb")
>>>fhandle.write(data)
>>>fhandle.close()

此时,1.html已窜在我们指定的目录下,用浏览器打开该文件,就可以看到我们爬取的网页界面。

除此之外,urllib中还有一些常见的用法。
如果希望返回与当前环境有关的信息,我们可以使用info()返回,比如可以执行:

>>>file.info()
<http.client.HTTPMessage object at 0x0000000003623D68>

可以看到,输出了对应的info,调用格式则为:“爬取的网页.info()”,我们之前爬取到的网页赋给了变量file,所以此时通过file调用。
如果我们希望获取当前爬取网页的状态码,我们可以使用getcode(),若返回200为正确,返回其他则不正确。在该例中,我们可以执行:

>>>file.getcode()
200

如果想要获取当前所爬取的URL地址,我们可以使用geturl()来实现。

>>>file.geturl()
'http://www.baidu.com'

一般来说,URL标准中只会允许一部分ASCII字符比如数字、字母、部分符号等,而其他的一些字符,比如汉字等,是不符合URL标准的。此时,我们需要编码。
如果要进行编码,我们可以使用urllib.request.quote()进行,比如,我们如果要对百度网址进行编码:

>>>urllib.request.quote('http://www.baidu.com')
'http%3A//www.baidu.com'

那么相应的,有时候需要对编码的网址进行解码

>>>urllib.request.unquote('http%3A//www.baidu.com')
'http://www.baidu.com'

浏览器的模拟—Headers属性

有的时候,我们无法爬取一些网页,会出现403错误,因为这些网页为了防止别人恶意采集其信息所以进行了一些反爬虫的设置。
那么如果我们向爬取这些网页的信息,应该怎么办呢?
可以设置一些Headers信息,模拟成浏览器去访问这些网站,此时,就能够解决这个问题了。
那我们该添加什么头部信息呢?
我们需要让爬虫模拟成浏览器,模拟成浏览器可以设置User-Agent信息。
任意打开一个网页,比如打开百度。然后按F12,会出现一个窗口。切换到Network标签页:
然后单击网页中的“百度一下”,即让网页发生一个动作。
此时,我们可以观察到下方的窗口出现了一些数据。将界面右上方的标签切换到“Headers”中,即可以看到了对应的头信息,此时往下拖动,就可以找到User-Agent字样的一串信息。这一串信息即是我们下面模拟浏览器所需要用到的信息。我们将其复制出来。如图:
这里写图片描述

这里写图片描述

我们可以得到该信息:

User-Agent:Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
X-Requested-With:XMLHttpRequest

接下来,我们讲解如何让爬虫模拟成浏览器访问页面的设置方法。

import urllib.request
import urllib.parse

url='http://www.baidu.com'
hearder={
   'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}

request=urllib.request.Request(url,headers=header)
reponse=urllib.request.urlopen(request).read()

fhandle=open("./1.html","wb")
fhandle.write(reponse)
fhandle.close()

首先,设置要爬取的网址,然后调用urllib.request.Request()函数创建一个request对象,该函数第一个参数传入url,第二个参数可以传入数据,默认是传入0数据,第三个参数是传入头部,该参数也是有默认值的,默认是不传任何头部。
我们需要创建一个dict,将头部信息以键值对的形式存入到dict对象中,然后将该dict对象传入urllib.request.Request()函数第三个参数。
此时,已经成功设置好报头,然后我们使用urlopen()打开该Request对象即可打开对应的网址。


超时设置

有的时候,我们访问一个网页,如果该网页长时间未响应,那么系统就会判断该网页超时了,即无法打开该网页。
有的时候,我们需要根据自己的需要来设置超时的时间值。我们可以在urllib.request.urlopen()打开网址的时候,通过timeout字段设置。
设置格式为:urllib.request.urlopen(要打开的网址,timeout=时间值)。


HTTP协议请求实战

如果要进行客户端与服务器端之间的消息传递,我们可以使用HTTP协议请求进行。
HTTP协议请求主要分为6种类型,各类型的主要作用如下:

  • GET请求:GET请求会通过URL网址传递信息,可以直接在URL中写上要传递的信息,也可以由表单进行传递。如果使用表单进行传递,这表单中的信息会自动转为URL地址中的数据,通过URL地址传递。
  • POST请求:可以向服务器提交数据,是一种比较主流也比较安全的数据传递方式,比如在登录时,经常使用POST请求发送数据。
  • PUT请求:请求服务器存储一个资源,通常要指定存储的位置。
  • DELETE请求:请求服务器删除一个资源。
  • HEAD请求:请求获取对应的HTTP报头信息。
  • OPTIONS请求:可以获取当前URL所支持的请求类型。

除此之外,还有TRACE请求与CONNECT请求等。
接下来,将通过实例讲解HTTP协议请求中的GET请求和POST请求,这两种请求相对来说用的最多。

GET请求示例分析

有时想在百度上查询一个关键词,我们会打开百度首页,并输入该关键词进行查询,那么这个过程怎样使用爬虫自动实现呢?
我们首先需要对查询过程进行相应的分析,可以打开百度首页,然后输入想检索的关键词,比如输入“hello”,然后按回车键,我们观察一下URL的变化,此时URL变成:

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu**&wd=hello**

可以发现,对应的查询信息是通过URL传递的,这里采用的就是HTTP请求中的GET请求方法,我们将该网址提取出来进行分析,字段ie的值为utf8,代表的是编码信息,而字段wd为hello,刚好是我们要查询的信息,所以字段wd应该存储的就是用户检索的关键词。根据我们的猜测,化简一下该网址,可以化简为https://www.baidu.com/s?wd=hello,将该网址复制到浏览器中,刷新一下,会发现该网址也能够出现关键词为‘hello’的搜索结果。
由此可见,我们在百度上查询一个关键字时,会使用GET请求,其中关键性字段是wd,网址格式为:https://www.baidu.com/s?wd=关键词。
分析到这里,你应该大概知道我们该怎么用爬虫实现自动地在百度上查询关键词结果了。直接上代码~

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import urllib.request
import urllib.parse

url='http://www.baidu.com/s?wd='
key='fengxin的博客' 
key_code=urllib.request.quote(key)  #因为URL里含中文,需要进行编码
url_all=url+key_code
header={
    'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}   #头部信息
request=urllib.request.Request(url_all,headers=header)
reponse=urllib.request.urlopen(request).read()

fh=open("./baidu.html","wb")    #写入文件中
fh.write(reponse)
fh.close()


此时,我们用浏览器打开刚才保存的baidu.html文件,我们就可以看到我们刚才爬取的网页结果,如图:
这里写图片描述

通过以上实例我们可以知道,如果要使用GET请求,思路如下:

  • 构建对应的URL地址,该URL地址包含GET请求的字段名和字段内容等信息,并且URL地址满足GET请求的格式,即“http://网址?字段名1=字段内容1&字段名2=字段内容2”
  • 以对应的URL为参数,构建Request对象。
  • 通过urlopen()打开构建的Request对象。
  • 按需求进行后续的处理操作,比如读取网页的内容、将内容写入文件等。

POST请求实例分析

我们在进行注册、登录等操作的时候,基本上都会遇到POST请求,接下来我们就为大家通过实例来分析如何通过爬虫来实现POST请求。
在此,我们示例一下如何使用爬虫通过POST表单传递信息。
给大家提供一个POST表单的测试网页,做测试使用,网址为:
http://www.iqianyue.com/mypost
打开网址,会发现有一个表单。
这里写图片描述

如何通过爬虫自动实现这个传递过程呢?
因为这里所采用的传递方法是POST方法,所以如果要使用爬虫自动实现,我们要构造PSOT请求,实现思路如下:

  • 设置好URL网址。
  • 构建表单数据,并使用urllib.parse.urlencode对数据进行编码处理。
  • 构建Request对象,参数包括URL地址和要传递的数据。
  • 添加头部信息,模拟浏览器进行爬取。
  • 使用urllib.requesr.urlopen()打开对应的Request对象。完成信息的传递。
  • 后续处理,比如读取网页内容,将内容写入文件等。

首先,需要设置好对应的URL地址,分析该网页,在单击提交之后,会传递到当前页面进行处理,所以处理的页面应该是http://www.iqianyue.com/mypost,所以,URL应该设置为http://www.iqianyue.com/mypost。
然后我们需要构建表单数据,在该网页上右击“查看网页源代码”,找到对应的form表单部分,然后进行分析。如图:
这里写图片描述

可以发现,表单中的姓名对应的输入框中,name属性值为"name",密码对应的输入框中,name属性值为"pass",所以,我们构造的数据中会包含两个字段,字段名分别是"name","pass’。字段值设置我们要传递的信息。格式为字典形式,即:
{字段名1:字段值1,字段名2:字段值2,…}
其他的跟上面的GET请求类似,直接上代码~

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import urllib.request
import urllib.parse

url='http://www.iqianyue.com/mypost'
header={
   'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}

data={'name':'fengxin','pass':'123'}
postdata=urllib.parse.urlencode(data).encode('utf8') #进行编码
request=urllib.request.Request(url,postdata)
reponse=urllib.request.urlopen(request).read()

fhandle=open("./1.html","wb")
fhandle.write(reponse)
fhandle.close()

在浏览器中打开我们刚保存的1.html文件,可以看到,数据已经成功提交。
这里写图片描述

Python重要的HTTP客户端库之urllib3使用详解 Python urllib3库作为一个成熟稳定的HTTP客户端解决方案,成功地解决了Python标准库在网络通信方面的局限性,为开发者提供了企业级的HTTP处理能力。该库通过连接池管理、线程安全架构和全面的安全特性,确保了高并发环境下的性能表现和通信安全。其丰富的配置选项和灵活的API设计,使其能够适应从简单脚本到复杂企业应用的各种使用场景。 阅读详情

相关推荐

常见机械臂模型不用找!Mujoco这儿都有!

高质量的模型集合,franka panda,so-arm100,ur之类的机械臂都有。常见机械臂模型不用找!Mujoco这儿都有!大概346M,网速不行的可以下载zip。

darcsdn 992

python urllib.quote 解决Python传递中文参数给URL

今天有个需要需要传递中文参数给URL 但是在GBK环境下的脚本传递GBK的参数老是给我报UNICODE的解码错误。烦的很。 所以我们果断选择用urlencode来处理中文, 由于国内外网站编码不同,国内是GBK的,国外是UTF8的。 &gt;&gt;&gt; import sys &gt;&gt;&gt; sys.stdin.encoding 'GBK' 表示我们的环境是GBK的 &gt...

u012922485的博客 2万+

西门子828D/840DSL数控机床产量数据采集实战:一个C#程序员的踩坑与填坑记录

本文详细记录了C#程序员在西门子828D/840DSL数控机床产量数据采集实战中的经验与教训。从硬件连接到软件配置,再到数据读取与异常处理,文章分享了工业现场编程的特殊挑战和解决方案,特别是针对数控系统的TCP/IP通信、PLC变量地址映射及数据解析等关键技术点。

weixin_42741930的博客 594

python 3的urllib库介绍

在本文中,我们将详细介绍urllib库中最常用的四个模块:urllib.request、urllib.parse、urllib.error和urllib.robotparser。可以使用urlopen()函数打开一个URL,如果给定了字符串参数,将尝试打开这个URL,并且返回一个 file-like 对象,在此对象上可以执行类似文件的操作。打开URL 有两种方法打开URL,分别是使用urllib.request.urlopen()和 urllib.request.Request()。

D0126_的博客 2596

从零到一:基于Matlab的二阶系统时域性能指标计算与可视化实战

本文提供了一份基于Matlab的二阶系统时域性能指标计算与可视化实战指南。通过详细的代码示例,手把手教你如何利用Matlab计算超调量、调节时间等关键指标,并绘制阶跃响应曲线进行可视化分析,帮助控制工程学习者和从业者快速掌握系统性能评估方法。

weixin_29096377的博客 268

手把手教你用DSP28335的PWM移相功能搞定双有源桥DAB(附完整代码)

本文详细解析了DSP28335的PWM移相功能在双有源桥DAB中的应用,包括ePWM模块的配置、移相时序原理及实战代码。通过精确的移相控制,实现DAB的高效运行和软开关,适用于车载充电机、储能系统等场景。附完整代码,助力开发者快速掌握硬件级移相技术。

weixin_30632089的博客 420

Python中urllib库用法详解

Python中urllib库用法详解

IT之一小佬的博客 5789

IMU预积分【SLAM】

预积分的推导过程比较多,所以这里只记录关键结论。 其实这些公式不太好记忆,因为预积分推导过程的想法来源很巧妙,无法看出物理意义。一切推导的来源: 最好记忆的旋转相对运动量: △Rij≐RiTRj=∏k=ij−1Exp((ω~k−bg,k−ηgd,k)△t)\triangle R_{ij} \doteq R_{i}^{T}R_{j} = \prod_{k=i}^{j-1}Exp((\tilde{\omega}_{k}-b_{g,k}-\eta_{gd,k})\triangle t) △Rij​≐RiT​Rj​

Tong_1024_的博客 1369

urllib.quote 分类: python py...

ython的url编码函数是在类urllib库中,使用方法是: 编码:urllib.quote(string[, safe]),除了三个符号“_.-”外,将所有符号编码,后面的参数safe是不编码的字符, 使用的时候如果不设置的话,会将斜杠,冒号,等号,问号都给编码了。 如下: >>> import urllib >>> print ...

weixin_30462049的博客 351

Nvivo12新手避坑指南:从安装到编码的完整流程(附实战案例)

本文为Nvivo12新手提供了从软件安装、初始设置到数据导入和编码分析的完整避坑指南。通过一个“校园欺凌现象的学生访谈研究”实战案例,详细拆解了处理中文文本、创建项目结构、执行手动编码及高级查询等关键步骤,帮助研究者避开常见错误,快速上手并高效完成质性数据分析。

resnet7explorer的博客 315

【系统移植】 移植主线U-Boot(v2024.01-rc3)到RK3399

[系统移植] 移植主线U-Boot(v2024.01-rc3)到RK3399

Systemcall名屋 1003

使用Python的urllib.quote进行解码编码

from urllib import parse # 导入包 str1 = 'mi你好' str2 = parse.quote(str1, encoding="utf-8") # quote()将字符串进行编码 print(str2) # mi%E4%BD%A0%E5%A5%BD str3 = "%E4%BD%A0%E5%A5%BD" # unquote()将字符串进行解码 str4 = parse.unquote(str3, encoding='utf-8') print(str4) # 你好

shiGXW的博客 2780

LangChain从入门到精通最全教程

LangChain是一个用于构建基于大语言模型(LLM数据感知:连接外部数据源(文档、API等)智能代理:通过工具调用实现自主决策模块化设计:支持链式调用、记忆管理、提示词工程等from langchain . llms import BaseLLM class CustomLLM(BaseLLM) : def _call(self , prompt : str , ** kwargs) - > str : return f"自定义响应: {

Cachel Wood的博客 1409

python3-urllib库详解

python3-urllib库详解 1.Urllib简介 1.1什么是Urllib urllib 是 Python 标准库中用于网络请求的库。 该库有四个模块,分别是: urllib.request   请求模块 urllib.error   异常处理模块 urllib.parse   解析模块 urllib.robotparser   robots.txt解析模块

YOUNGBC的博客 703

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

python3中urllib库_Python--urllib3库详解

Python--urllib3库详解Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3。Urllib3提供了很多python标准库里所没有的重要特性:1、线程安全2、连接池3、客户端SSL/TLS验证4、文件分部编码上传5、协助处理重复请求和HTTP重定位6、支持压缩编码7、支持HTTP和SOCKS代理8、...

weixin_30827827的博客 1405

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

python3 Urllib库基本使用

一、什么是Urllib库? Urllib库是Python自带的一个http请求库,包含以下几个模块: urllib.request 请求模块 urllib.error     异常处理模块 urllib.parse     url解析模块 urllib.robotparser  robots.txt解析模块 有了Urllib库呢,...

weixin_42549920的博客 227

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python中urllib3库的使用示例

urllib3 是一个功能强大的、用户友好的 HTTP 客户端库,用于在 Python 中发送 HTTP/1.1 请求。以下是一些使用 urllib3 的基本示例。这些示例展示了 urllib3 的基本用法和一些高级功能。根据你的需求,你可以进一步配置和使用这个库。注意:禁用 SSL 证书验证在生产环境中是不安全的,因为它会使你的请求容易受到中间人攻击。首先,确保你已经安装了 urllib3。# 创建一个 HTTP 连接池,并禁用 SSL 证书验证。# 创建带有重试机制的连接池。# 发送 GET 请求。

necunTwo 500

Python3爬虫系列之urllib库

Python3爬虫之urllib库 基本介绍 最基本的网络请求库。可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据,在Python3的urllib库中,所有和网络请求相关的方法,都被集到urllib.request库上 urlopen函数 示例 resp = request.urlopen('http://www.baidu.com') print(resp.rea...

JunsIr的技术栈 772

python3中urllib库_Python2/3中urllib库的一些常见用法

什么是Urllib库Urllib是Python提供的一个用于操作URL的模块,我们爬取网页的时候,经常需要用到这个库。升级合并后,模块中的包的位置变化的地方较多。urllib库对照速查表Python2.XPython3.Xurlliburllib.request, urllib.error, urllib.parseurllib2urllib.request, urllib.errorurllib...

weixin_30847543的博客 131

urllib3,一个超强的 Python 库!

urllib3 是一个强大而灵活的 HTTP 客户端库,提供了丰富的功能和易用的 API,适用于各种场景下的 HTTP 请求和响应处理。通过连接池管理、SSL/TLS 支持、自动重试等功能,urllib3 可以帮助开发者更轻松地构建稳健、高效的网络应用程序。无论是向 Web 服务器发送请求、处理 API 数据、下载文件还是进行网络测试,urllib3 都是一个强大的工具,值得开发者深入学习和应用。

涛哥聊Python 4154

python的网络请求库urllib、urllib2、urllib3、request的联系

urllib、urllib2、urllib3、request均能通过网络访问互联网上的资源文件,它们通过使用统一资源定位符(URL)并结合re模块完成很多意想不到的操作。 requests是基于urllib3封装的,继承了urllib2的所有特性,遵循Apache2 Licensed开源协议的HTTP库,支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。如他的口号HTTP for Humans所说,这才是给人用的HT

craftsman2020的博客 4301

python3安装urllib3库_Python2和Python3中urllib库中urlencode的使用注意事项

前言在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包位置有些不同。对于Python2Python2中提供了urllib和urllib2两个模块。urlencode方法所在位置为:urllib.urlencode(values) # 其中values为所需...

weixin_39870199的博客 159

python3关于urllib库

urllib 关于python3与python2中urllib库的区别 转载于:https://www.cnblogs.com/liwuming/p/10253462.html

weixin_33671935的博客 160

python3安装urllib3库_Python--urllib3库详解1

原博文2016-12-08 23:11 −Python--urllib3库详解1  Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3。Urllib3提供了很多python标准库里所没有的重要特性:   1、 线程...相关推荐2019-12-17 15:54 −/usr/lib/python2.7...

weixin_39641697的博客 1020

urllib库在python2与python3中的区别

python2与python3中会有一些语法的不同。python3是python2的升级版,在python2中,有urllib库与urllib2库,但是在python3中,都合并到urllib库中。此篇博客主要介绍了python2与python3在urllib库使用时的不同

moll_77的博客 6714

python | urllib3,一个超强的 Python 库!

在现代 Web 开发中,与服务器进行 HTTP 通信是一项常见任务。Python 提供了许多库来处理 HTTP 请求和响应,其中 urllib3 库是一个强大而灵活的选择。本文将深入探讨 urllib3 库的各个方面,包括其背景、核心特性、使用方法以及实际应用场景,帮助大家更好地了解和利用这个强大的 HTTP 客户端库。

csdn_xmj的博客 1472
上一篇: Python正则表达式的使用
下一篇: Python3爬虫代理服务器与cookie的使用
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值