Python爬虫(二)— Python3内置模块 Urllib

16. python从入门到精通——Python网络爬虫 网络爬虫:又被称为网络蜘蛛、网络机器人。它可以实现按照指令的规则或程序的算法自动浏览网络并且获取网络中的信息。 阅读详情

前言

以下关于Urllib的内容讲解,强烈推荐深入了解的查看官方文档。

英文版:Urllib https://docs.python.org/3/library/urllib.html

Urllib

  • Urllib是python内置的HTTP请求库,包括以下模块
    • urllib.request 请求模块
    • urllib.error 异常处理模块
    • urllib.parse url解析模块
    • urllib.robotparser robots.txt解析模块

urlopen

urlopen能用于一些简单的请求,不需要设置header信息的。

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

  • 主要对url, data,timeout进行设置。看一下代码:
import urllib.request
import urllib.parse
import urllib.error
import socket

"""
1.url:就是打开的测试地址  http://httpbin.org
2.data:发送post请求必须设置的参数,通过bytes(urllib.parse.urlencode())可以将post的数据进行转换放到urllib.request.urlopen的data参数中。
3.timeout:是一个超时设置,超时则抛出异常
"""
data = bytes(urllib.parse.urlencode({'word':'hello'}), encoding='utf8')
try:
    response = urllib.request.urlopen(url='http://httpbin.org/post', data=data, timeout=5)
    print(response.read())
except urllib.error.URLError as e:
    if isinstance(e.reason, socket.timeout):
        print('超时...')
  • urllib.request.urlopen 返回的响应 response
    urlopen返回的是一个 http.client.HTTPResponse 对象:<http.client.HTTPResponse object at 0x0331E430>,response.read()获得的是响应体的内容
import urllib.request

response = urllib.request.urlopen(url='https://www.baidu.com/')
print(type(response))
print(response.status)
print(response.getheaders())
print(response.getheader('Server'))
"""
<class 'http.client.HTTPResponse'>
200
[('Accept-Ranges', 'bytes'), ('Cache-Control', 'no-cache'),  ......]
BWS/1.1
"""

request

如果需要对请求设置header信息,就需要使用request。主要是对如何增加请求头进行说明:

from urllib import request, parse

url = 'http://httpbin.org/post'
# 第一种方式,构造header字典
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
    'Host': 'httpbin.org'
}
# 第二种方式:req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36')

dict = {
    'word':'hello'
}
data = bytes(parse.urlencode(dict), encoding='utf8')
req = request.Request(url=url, data=data, headers=headers, method='POST')
response = request.urlopen(req)
print(response.read().decode('utf-8'))

高级用法

  • 代理 ProxyHandler
    某些网站对IP访问次数、频率有所限制,因此就需要随时切换IP,避免爬虫出错停止运行的情况。
import urllib.request

proxy_handler = urllib.request.ProxyHandler({
    'http': 'http://127.0.0.1:9743',
    'https': 'https://127.0.0.1:9743'
})
opener = urllib.request.build_opener(proxy_handler)
response = opener.open('http://httpbin.org/get')
print(response.read())
  • cookie HTTPCookiProcessor
    cookie保存了登录信息,保存到http.cookijar,可以方便使用。更多的时候,对于难以获取cookie的网站,我们通常是使用selenium获取cookie,再通过其他高效的方式进行爬取。
import http.cookiejar, urllib.request

cookie = http.cookiejar.CookieJar()
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
response = opener.open('http://www.baidu.com')
for item in cookie:
    print(item.name+"="+item.value)
"""
BAIDUID=68AF7F00874AE2D8206AC4B524B49EAB:FG=1
BIDUPSID=68AF7F00874AE2D8206AC4B524B49EAB
H_PS_PSSID=1451_21090_18559_29064_28519_29098_28836_28584_26350
PSTM=1558969682
delPer=0
BDSVRTM=0
BD_HOME=0
"""

异常处理

避免发生404 500异常导致的爬虫停止。
URLError,HTTPError,HTTPError是URLError的子类

  • URLError:reason
  • HTTPError:code,reason,headers
from urllib import request,error

try:
    response = request.urlopen("http://pythonsite.com/1111.html")
except error.HTTPError as e:
    print(e.reason)
    print(e.code)
    print(e.headers)
except error.URLError as e:
    print(e.reason)
else:
    print("reqeust successfully")
"""
Not Found
404
Date: Mon, 27 May 2019 15:12:43 GMT
Server: Apache
Vary: Accept-Encoding
Content-Length: 207
Connection: close
Content-Type: text/html; charset=iso-8859-1
"""

工具模块 urlparse

urllib.parse.urlparse(urlstring, scheme=’’, allow_fragments=True)

from urllib.parse import urlparse

o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html', scheme='https')
print(o)
print(o.scheme, o.port, o.geturl())

"""
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='')
http 80 http://www.cwi.nl:80/%7Eguido/Python.html
"""

个人博客:Loak 正 - 关注人工智能及互联网的个人博客
文章地址:Python爬虫(二)— Python3内置模块 Urllib

打造你自己的小程序容器 —— 一套能装得下整个未来的跨端技术! 摘要: 本文介绍了一种基于Capacitor框架开发的轻量级“小程序容器”解决方案——LapDrop。通过模拟微信小程序的运行逻辑(动态加载、原生能力调用、沙盒环境),LapDrop允许开发者自主构建跨平台(iOS/Android/Web)的小程序生态。其核心利用Capacitor的插件桥接机制,实现JS与原生功能的无缝调用,并支持浏览器调试与原生环境一致化。优势包括插件化架构、状态隔离、热更新及开放权限控制,适用于企业级模块化应用或开发者工具。未来计划扩展生命周期管理、远程加载等功能,目标成为开源的小程序 阅读详情

相关推荐

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 422

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

DELPHI11 利用Android手机实现条码扫描功能

好了,整个过程全部结束,当然这只是最简单的例子,只是演示一下如何识别条码,更多的条码处理功能,比如优化,提速等需要在后面继续。安装过程中所有提示框全部按OK就可以,直到提示安装成功,那么ZXing库就成功完成了安装。点击红框标识的文件夹图标,将下载的ZXing库文件路径加入进来后,点ADD。第三步:选择下载的ZXing库路径,并按Ctrl + A进行全选,并导入。至此为止,我们的库才算是全部安装完成,可以在DELPHI 中正常引用了。2.打开相机,识别条码,并将条码内容显示在MEMO1中。

1531

python爬虫urllib3模块详解,2024吊打面试官系列

可通过获取响应头信息。import urllib3 # 导入urllib3模块urllib3.disable_warnings() # 关闭ssl警告url = ‘https://www.httpbin.org/get’ # get请求测试地址http = urllib3.PoolManager() # 创建连接池管理对象。

m0_56175058的博客 1582

用Java实现森林冰火人游戏

g.drawString("游戏结束", CELL_SIZE * COLS / 2 - 100, CELL_SIZE * ROWS / 2);g.drawString("难度级别: " + difficultyLevel, 10, CELL_SIZE * ROWS + 60);g.drawString("生命值: " + playerHealth, 10, CELL_SIZE * ROWS + 20);setTitle("森林冰火人");

2401_82778412的博客 1734

YOLOv8改进 | Conv篇:基于FasterBlock与C2f结构的二次创新,参数量下降70万【附保姆级代码】

通过引入FasterBlock二次创新C2f结构,我们成功地对YOLOv8模型进行了优化,显著降低了其参数量,并提升了推理速度,而精度保持不变甚至有所提升。该模型在多个实际应用场景中展现出了优异的性能,尤其是在嵌入式设备、移动端和自动驾驶等领域,具有广泛的应用潜力。未来的研究将进一步优化模型结构,探索更多的应用场景,为目标检测技术的发展做出贡献。

一键难忘的博客 3215

Python爬虫从菜鸟到高手--内置网络库urllib详解

Robots协议也称作爬虫协议、机器人协议,它的全名是网络爬虫排除标准(Robots Exclusing Protocol),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取。该协议的内容通常放在一个名为robots.txt的文本文件中,该文件一般位于网站的根目录下。注意,robots.txt文件中的内容只是告诉爬虫应该抓取什么,不应该抓取什么,但并不是通过技术手段阻止爬虫抓取那些被禁止的资源,而只是通知爬虫而已。

qq_41314882的博客 952

TenserRt平台SMOKE 3D目标检测部署完整教程:从理论到实践

本教程详细介绍了在RK3588平台上部署SMOKE 3D目标检测模型的完整流程。SMOKE是一种创新的单阶段单目3D检测方法,通过关键点估计直接预测3D目标信息,有效解决了深度信息缺失等挑战。文章从理论基础出发,解析了SMOKE的核心算法和网络架构,包括DLA-34主干网络和关键点中心化策略。同时提供了详细的Docker环境配置、模型导出到ONNX格式的实践指南,以及TensorRT引擎构建和性能优化的关键技术要点。该教程为开发者在嵌入式平台上实现高效3D目标检测提供了完整的技术参考。

LXY_LOVE36的博客 373

【Python快速上手(二十八】- Python3 urllib详解

Python的urllib库包含多个模块,每个模块都提供了一组功能来处理URL。urllib.request:用于打开和读取URL。urllib.parse:用于解析URL。urllib.error:定义了urllib中的异常类。urllib.robotparser:用于解析robots.txt文件。本文详细介绍了Python3中的urllib库,包括基本用法、发送请求、处理响应、异常处理、高级用法以及实际应用案例。掌握这些知识可以帮助开发人员更好地处理URL,并实现各种网络操作。

qq_38641481的博客 1429

YOLOv8 交通违规检测各个场景的实际应用

本文介绍了基于YOLOv8的交通违规检测系统在不同场景下的应用实现。系统可检测闯红灯、超速、违停和不系安全带等多种违规行为,针对每种场景提供了具体的技术方案和Python实现代码。其中闯红灯检测结合信号灯状态分析,超速检测通过距离时间计算速度,违停检测采用长时间跟踪策略,安全带检测则需更高精度识别。文章还展示了如何整合各功能构建综合交通监管系统,并总结了不同应用场景的技术要点和优化方向,为智能交通管理提供了实用解决方案。

u010117029的博客 300

OpenClaw插件开发指南:扩展AI智能体的无限可能

OpenClaw插件开发指南介绍了如何扩展AI智能体的功能。该插件系统支持多种类型(功能、集成、工具、界面、工作流插件),具有模块化、低耦合等优势。开发环境需要安装SDK和工具包,通过plugin.json配置插件信息,主文件实现核心功能。API提供智能体管理、任务执行等接口,示例演示了文本处理插件的创建流程。开发者可基于此框架灵活扩展OpenClaw的能力。

一键难忘的博客 562

python爬虫详解

python爬虫简介 1、基本概念 1.1、什么是爬虫 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。例如:传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具也存在着一定的局限性,通用搜索引擎的目标是尽可能大的网络覆盖率,返回的结果包含大量用户不关心的网页,为了解决上述问题,定..

小仙儿 6万+

Vue3 - 详细实现将多个文件批量导出为ZIP压缩包格式并下载功能,vue3将文件批量下载打包成ZIP下载保存本地,下载多个文件打包输出成zip格式(支持二进制文件流/base64图片/文件URL)

vue3,nuxt3,vue3批量导出文件打包成压缩包,Vue3中如何批量导出文件(图片/PDF)并打包压缩成ZIP,实现多张图片导出zip文件,vue3导出pdf文件很多如何变成导出一个zip文件,jszip插件文档流,vue3中下载多个文件打包为一个zip,Vue3中将文件批量下载打包成zip格式,批量下载图片并打包成压缩包,vue3导出多个pdf或excel打包成zip压缩包进行下载,批量下载文件并打压缩包,vue3中如何批量下载文件并生成zip格式文件,文件通过服务端接口返回二进制文件流如何处理,文

🏆 前端领域优质创作者 1万+

网络爬虫【爬虫库urllib】

网络爬虫python库urllib

2401_88885149的博客 5012

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【愚公系列】《Python网络爬虫从入门到精通》004-请求模块urllib3

在现代编程中,网络请求是一个不可或缺的环节,无论是数据抓取、API调用还是后端服务的交互,都会涉及到网络通讯。而在众多网络请求库中,urllib3因其强大的功能和易用性,成为了许多开发者的首选。它不仅提供了对HTTP协议的全面支持,还具备连接池、重试机制和SSL/TLS验证等多种实用特性。在本文中,我们将深入探讨urllib3模块的基本用法,帮助你更好地理解如何利用这个库进行高效的网络请求。不论你是初学者还是有经验的开发者,掌握urllib3都将为你的项目带来极大的便利。

愚公智库 12万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python网络爬虫实战教学——urllib的使用(1)

首先介绍一个Python库叫作urllib,利用它就可以实现HTTP请求的发送,而且不需要关心HTTP协议本身甚至更底层的实现,我们要做的是指定请求的URL`请求头`请求体等信息。此外urlljb还可以把服务器返回的响应转化为Python对象,我们通过该对象便可以方便地获取响应的相关信息’如响应状态码、响应头、响应体等。

阿极的博客 9383

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

python网络爬虫(urllib,urllib,requests,bs4)

python网络爬虫一、网络爬取的概述与分类1、网络爬虫的概述2、网络爬虫的分类3、网络爬虫的基本原理二、网络爬取的基本技术1、网络的基本请求(1)、urllib模块(2)、urllib3模块(3)、requests模块2、请求头部处和超时处理3、代理服务4、HTML解析之BeautifulSoup 一、网络爬取的概述与分类 1、网络爬虫的概述 网络爬虫是指按照指定的规则,自动流量或抓取互联网中的信息。 2、网络爬虫的分类 通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫 3、网络爬虫的基本原理

giun的博客 1321

Python网络爬虫 urllib3 入门这篇就够了

urllib3是一个功能强大且易于使用的Python HTTP库,主要用于发送HTTP请求和处理HTTP响应。它是urllib和urllib2的后续版本,设计用于支持HTTP 1.1标准,并提供了许多高级功能和选项,使得在Python中进行HTTP通信变得更加简单和灵活。urllib3的主要功能和特点包括:支持HTTP和HTTPS协议:urllib3支持HTTP和HTTPS协议的请求,可以方便地发送GET、POST、PUT、DELETE等各种类型的请求。

制定持续可量化的目标,不断坚持。 2021

Python爬虫之Urllib(内置库)

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。通俗来讲,假如你需要互联网上的信息,如商品价格,图片视频资源等,但你又不想或者不能自己一个一个自己去打开网页收集,这时候你便写了一个程序,让程序按照你指定好的规则去互联网上收集信息,这便是爬虫,我们熟知的百度,谷歌等搜索引擎背后其实也是一个巨大的爬虫。解释1通过一个程序,根据Url(https//www.baidu.com/)进行爬取网页,获取有用信息。.......

m0_61490399的博客 1178

Python网络爬虫技术一课一得

为了帮助开发人员抓取静态网页数据,减少开发时间,Python提供了一些功能齐全的库,包括。

2403_89628952的博客 1627

python爬虫精讲之请求模块urllib

文章目录Urllib版本常⽤的⽅法响应对象使用方法urllib.parse模块常⽤⽅法实例对比: 用python爬虫一般使用的是requests模块,但是requests并不是一开始就存在并使用的,requests是第三方模块,而urllib是内置模块,python自带的模块 而是发展过来的,而requests的出现使用前用的是urllib.request模块 Urllib Urllib是python内置的HTTP请求库 包括以下模块 urllib.request 请求模块 urllib.error 异常处

xdc1812547560的博客 7123

Python3网络爬虫(一):利用urllib进行简单的网页抓取

运行平台:Windows10 Python版本:Python3.x IDE:Sublime text3

Jack-Cui 22万+

【PYTHON3学习】常用内置模块urllib学习总结

1 urllib 提供了一系列用于操作URL的功能 1.1 简单爬虫 1.引入请求模块——from urllib import request 2.打开网页——request.urlopen() 3.读取网页——read 此处以https://www.douban.com为例子 from urllib import request with request.urlopen('https://www...

weixin_42157432的博客 3216

网络爬虫之urllib库

网络爬虫是获取和利用网页数据的重要工具。在Python中,urllib库是一个强大的工具,可以帮助我们轻松地构建简单的网络爬虫。通过使用urlopen函数,我们可以获取网页的内容,并使用try/except语句处理可能出现的异常。虽然urllib库本身不提供HTML解析功能,但我们可以结合其他库如BeautifulSoup来提取我们感兴趣的信息。通过学习urllib库,我们可以深入了解网络爬虫的基本原理和工作方式。

zwkkkhhh的博客 1555

Python网络爬虫入门

Python网络爬虫入门 网络爬虫(web crawler),也叫网络蜘蛛(Web Spider)、网络机器人(Internet Bot)。简单地说,抓取万维网(World Wide Web)上所需要的数据的程序就叫网络爬虫。 网络爬虫常见分类: 通用网络爬虫(General Purpose Web Crawler)又称全网爬虫(Scalable Web Crawler)爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。这类网络爬虫的爬行范围

cnds123的专栏 3139

Python网络爬虫(一)---urllib

什么是网络爬虫 网络爬虫英文可以叫crawler,也可以叫spider,简而言之就是利用计算机从网上抓取你所感兴趣的文件、图片、视频等。其实在大多数情况下,没有什么网络爬虫,我们也可以根据自己所需要的,通过浏览器从网上下载东西,(而网络爬虫的实质也是在模仿浏览器进行一系列的操作)但是如果我们所要的东西特别多时,例如要下载10000张图片,一个个用手去点岂不太麻烦了,所以我们需要利用到计算机来帮助我...

qq_42366884的博客 1564
上一篇: Python爬虫(一)—爬虫的预备知识(爬虫概念、HTTP与HTTPS、请求与响应)
下一篇: Python爬虫(三)— 深入了解Requests模块
luoz_python
博客等级 码龄10年 57粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值