python 包实现 urllib 网络请求操作

目录
  • 一、简介
  • 二、发起请求
  • 三、携带参数请求
  • 四、获取响应数据
  • 五、设置headers
  • 六、使用代理
  • 七、认证登录
  • 八、设置cookie
  • 九、异常处理
  • 十、HTTP异常
  • 十一、超时异常
  • 十二、解析编码
  • 十三、参数拼接
  • 十四、请求链接解析
  • 十五、拼接链接
  • 十六、字典转换参数

一、简介

  • 是一个 python 内置包,不需要额外安装即可使用
  • urllib 是 Python 标准库中用于网络请求的库,内置四个模块,分别是
  • urllib.request:用来打开和读取 url,可以用它来模拟发送请求,获取网页响应内容
  • urllib.error:用来处理 urllib.request 引起的异常,保证程序的正常执行
  • urllib.parse:用来解析 url,可以对 url 进行拆分、合并等
  • urllib.robotparse:用来解析 robots.txt 文件,判断网站是否能够进行爬取

二、发起请求

import urllib.request

# 方法一
resp = urllib.request.urlopen('http://www.baidu.com', timeout=1)
print(resp.read().decode('utf-8'))

# 方法二
request = urllib.request.Request('http://www.baidu.com')
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))

三、携带参数请求

  • 请求某些网页时需要携带一些数据
import urllib.parse
import urllib.request

params = {
'name':'autofelix',
'age':'25'
}

data = bytes(urllib.parse.urlencode(params), encoding='utf8')
response = urllib.request.urlopen("http://www.baidu.com/", data=data)
print(response.read().decode('utf-8'))

四、获取响应数据

import urllib.request

resp = urllib.request.urlopen('http://www.baidu.com')
print(type(resp))
print(resp.status)
print(resp.geturl())
print(resp.getcode())
print(resp.info())
print(resp.getheaders())
print(resp.getheader('Server'))

五、设置headers

import urllib.request

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
}
request = urllib.request.Request(url="http://tieba.baidu.com/", headers=headers)
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))

六、使用代理

import urllib.request

proxys = urllib.request.ProxyHandler({
'http': 'proxy.cn:8080',
'https': 'proxy.cn:8080'
})

opener = urllib.request.build_opener(proxys)
urllib.request.install_opener(opener)

request = urllib.request.Request(url="http://www.baidu.com/")
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))

七、认证登录

  • 有些网站需要携带账号和密码进行登录之后才能继续浏览网页
import urllib.request

url = "http://www.baidu.com/"
user = 'autofelix'
password = '123456'
pwdmgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
pwdmgr.add_password(None,url,user,password)

auth_handler = urllib.request.HTTPBasicAuthHandler(pwdmgr)
opener = urllib.request.build_opener(auth_handler)
response = opener.open(url)
print(response.read().decode('utf-8'))

八、设置cookie

  • 如果请求的页面每次需要身份验证,我们可以使用 Cookies 来自动登录,免去重复登录验证的操作
import http.cookiejar
import urllib.request

cookie = http.cookiejar.CookieJar()
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
response = opener.open("http://www.baidu.com/")

f = open('cookie.txt', 'a')
for item in cookie:
f.write(item.name+" = "+item.value+'\n')
f.close()

九、异常处理

from urllib import error, request

try:
resp = request.urlopen('http://www.baidu.com')
except error.URLError as e:
print(e.reason)

十、HTTP异常

from urllib import error, request

try:
resp = request.urlopen('http://www.baidu.com')
except error.HTTPError as e:
print(e.reason, e.code, e.headers, sep='\n')
except error.URLError as e:
print(e.reason)
else:
print('request successfully')

十一、超时异常

import socket, urllib.request, urllib.error

try:
resp = urllib.request.urlopen('http://www.baidu.com', timeout=0.01)
except urllib.error.URLError as e:
print(type(e.reason))
if isinstance(e.reason,socket.timeout):
print('time out')

十二、解析编码

from urllib import parse

name = parse.quote('飞兔小哥')

# 转换回来
parse.unquote(name)

十三、参数拼接

  • 在访问url时,我们常常需要传递很多的url参数
  • 而如果用字符串的方法去拼接url的话,会比较麻烦
from urllib import parse

params = {'name': '飞兔', 'age': '27', 'height': '178'}
parse.urlencode(params)

十四、请求链接解析

from urllib.parse import urlparse

result = urlparse('http://www.baidu.com/index.html?user=autofelix')
print(type(result))
print(result)

十五、拼接链接

  • 如果拼接的是两个链接,则以返回后面的链接
  • 如果拼接是一个链接和参数,则返回拼接后的内容
from urllib.parse import urljoin

print(urljoin('http://www.baidu.com', 'index.html'))

十六、字典转换参数

from urllib.parse import urlencode

params = {
'name': 'autofelix',
'age': 27
}
baseUrl = 'http://www.baidu.com?'
print(baseUrl + urlencode(params))

到此这篇关于python 包中的 urllib 网络请求教程的文章就介绍到这了,更多相关 urllib 网络请求 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python爬虫之请求模块urllib的基本使用

    目录 前言 urllib的子模块 HttpResponse常用方法与属性获取信息 urlli.parse的使用(一般用于处理带中文的url) 爬取baidu官网HTML源代码 添加请求头信息(重构user_agent) 扩展知识 with open和open两者的区别 总结 前言 在实现网络爬虫的爬取工作时,就必须使用网络请求,只有进行了网络请求才可以对响应结果中的数据进行提取,urllib模块是python自带的网络请求模块,无需安装,导入即可使用.下面将介绍如果使用python中的urlli

  • python urllib.request模块的使用详解

    python的urllib模块提供了一系列操作url的功能,可以让我们通过url打开任意资源.其中比较常用的就是request模块,本篇主要介绍requset模块. urllib子模块 urllib.request 打开或请求url urllib.error 捕获处理请求时产生的异常 urllib.parse 解析url urllib.robotparser 用于解析robots.txt文件 robots.txt是一种存放于网站根目录下文本文件,用来告诉网络爬虫服务器上的那些文件可以被查看.又被

  • 关于python爬虫应用urllib库作用分析

    目录 一.urllib库是什么? 二.urllib库的使用 urllib.request模块 urllib.parse模块 利用try-except,进行超时处理 status状态码 && getheaders() 突破反爬 一.urllib库是什么? urllib库用于操作网页 URL,并对网页的内容进行抓取处理 urllib包 包含以下几个模块: urllib.request - 打开和读取 URL. urllib.error - 包含 urllib.request 抛出的异常. ur

  • Python爬虫urllib和requests的区别详解

    我们讲了requests的用法以及利用requests简单爬取.保存网页的方法,这节课我们主要讲urllib和requests的区别. 1.获取网页数据 第一步,引入模块. 两者引入的模块是不一样的,这一点显而易见. 第二步,简单网页发起的请求. urllib是通过urlopen方法获取数据. requests需要通过网页的响应类型获取数据. 第三步,数据封装. 对于复杂的数据请求,我们只是简单的通过urlopen方法肯定是不行的.最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕

  • Python爬虫中urllib3与urllib的区别是什么

    目录 urllib库 urllib.request模块 Request对象 1 . 请求头添加 2. 操作cookie 3. 设置代理 urllib.parse模块 urllib.error模块 urllib.robotparse模块 网络库urllib3 网络请求 GET请求 POST请求 HTTP响应头 上传文件 超时处理 urllib库 urllib 是一个用来处理网络请求的python标准库,它包含4个模块. urllib.request---请求模块,用于发起网络请求 urllib.p

  • python urllib库的使用详解

    相关:urllib是python内置的http请求库,本文介绍urllib三个模块:请求模块urllib.request.异常处理模块urllib.error.url解析模块urllib.parse. 1.请求模块:urllib.request python2 import urllib2 response = urllib2.urlopen('http://httpbin.org/robots.txt') python3 import urllib.request res = urllib.r

  • Python爬虫之urllib库详解

    目录 一.说明: 二.urllib四个模块组成: 三.urllib.request 1.urlopen函数 2.response 响应类型 3.Request对象 4.高级请求方式 四.urllib.error 五.URL解析urllib.parse 六.urllib.robotparser 总结 一.说明: urllib库是python内置的一个http请求库,requests库就是基于该库开发出来的,虽然requests库使用更方便,但作为最最基本的请求库,了解一下原理和用法还是很有必要的.

  • python 包实现 urllib 网络请求操作

    目录 一.简介 二.发起请求 三.携带参数请求 四.获取响应数据 五.设置headers 六.使用代理 七.认证登录 八.设置cookie 九.异常处理 十.HTTP异常 十一.超时异常 十二.解析编码 十三.参数拼接 十四.请求链接解析 十五.拼接链接 十六.字典转换参数 一.简介 是一个 python 内置包,不需要额外安装即可使用 urllib 是 Python 标准库中用于网络请求的库,内置四个模块,分别是 urllib.request:用来打开和读取 url,可以用它来模拟发送请求,获

  • 微信小程序使用request网络请求操作实例

    本文实例讲述了微信小程序使用request网络请求操作.分享给大家供大家参考,具体如下: 小程序提供了很多api,极大的方便了开发者,其中网络请求api是wx.request(object),这是小程序与开发者的服务器实现数据交互的一个很重要的api. 官方参数说明如下 OBJECT参数说明: 参数名 类型 必填 说明 url String 是 开发者服务器接口地址 data Object.String 否 请求的参数 header Object 否 设置请求的 header , header

  • python 包实现 time 时间管理操作

    目录 一.当前时间戳 二.获取当前时间字符串 三.获取当前计算机时间格式 四.格式化时间显示 五.字符串转为计算机格式 六.精确时间计数值 七.休眠等待 一.当前时间戳 获取当前时间戳,即当前系统内表示时间的一个浮点数 import time time.time() 二.获取当前时间字符串 获取当前时间,并返回一个以人类可读方式的字符串 import time time.ctime() 三.获取当前计算机时间格式 获取当前时间,并返回计算机可处理的时间格式 import time time.gm

  • Python爬虫实现HTTP网络请求多种实现方式

    1.通过urllib.requests模块实现发送请求并读取网页内容的简单示例如下: #导入模块 import urllib.request #打开需要爬取的网页 response = urllib.request.urlopen('http://www.baidu.com') #读取网页代码 html = response.read() #打印读取的内容 print(html) 结果: b'<!DOCTYPE html><!--STATUS OK-->\n\n\n \n \n &

  • python包实现 retrying 重复回调操作

    目录 一.安装 二.一直请求 三.设置最大运行次数 四.设置重试的最大时间 五.设置间隔时间 六.设置随机间隔时间 七.随机倍数间隔时间 八.指定异常类型 九.过滤回调 十.异常执行 一.安装 循环.重复回调我们在很多场景中会用到 不仅在支付场景中,我们需要通过反复的回调知道用户的支付状态 还有在请求中,如果请求失败,我们需要再重新进行进行请求,防止请求异常导致数据缺失 pip install retrying 二.一直请求 假如我们希望在代码碰到异常时,一直回调,直到成功 下面方法中,我们直接

  • python 包 requests 实现请求操作

    目录 一.安装 二.请求类型 三.带参数请求 四.自定义headers 五.请求属性 六.文件上传 七.会话维持 八.证书验证 九.代理设置 十.超时设置 十一.认证设置 十二.异常处理 一.安装 pip install requests 二.请求类型 import requests requests.get('https://www.baidu.com') requests.post('https://www.baidu.com') requests.put('https://www.baid

  • mac 安装python网络请求包requests方法

    如下所示: sudo easy_install requests 出现如图所示信息 done 即可愉快的使用 requests了 以上这篇mac 安装python网络请求包requests方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Python大数据之网络爬虫的post请求、get请求区别实例分析

    本文实例讲述了Python大数据之网络爬虫的post请求.get请求区别.分享给大家供大家参考,具体如下: 在JetBrains PyCharm 2016.3软件中编写代码前,需要指定python和编码方式: #!user/bin/python 编码方式 :#coding=utf-8 或者 #-*-coding:utf-8-*- post请求: #导入工具,内置的库 import urllib import urllib2 #加一个\可以换行 #response = \ #urllib2.url

  • python编程之requests在网络请求中添加cookies参数方法详解

    哎,好久没有学习爬虫了,现在想要重新拾起来.发现之前学习爬虫有些粗糙,竟然连requests中添加cookies都没有掌握,惭愧.废话不宜多,直接上内容. 我们平时使用requests获取网络内容很简单,几行代码搞定了,例如: import requests res=requests.get("https://cloud.flyme.cn/browser/index.jsp") print res.content 你没有看错,真的只有三行代码.但是简单归简单,问题还是不少的. 首先,这

  • python爬虫系列网络请求案例详解

    学习了之前的基础和爬虫基础之后,我们要开始学习网络请求了. 先来看看urllib urllib的介绍 urllib是Python自带的标准库中用于网络请求的库,无需安装,直接引用即可. 主要用来做爬虫开发,API数据获取和测试中使用. urllib库的四大模块: urllib.request: 用于打开和读取url urllib.error : 包含提出的例外,urllib.request urllib.parse:用于解析url urllib.robotparser:用于解析robots.tx

随机推荐