Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)_python
我们可以利用urllib来抓取远程的数据进行保存哦,以下是python3 抓取网页资源的多种方法,有需要的可以参考借鉴。
1、最简单
- import urllib.request
- response = urllib.request.urlopen('http://python.org/')
- html = response.read()
2、使用 Request
- import urllib.request
- req = urllib.request.Request('http://python.org/')
- response = urllib.request.urlopen(req)
- the_page = response.read()
3、发送数据
- #! /usr/bin/env python3
- import urllib.parse
- import urllib.request
- url = 'http://localhost/login.php'
- user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
- values = {
- 'act' : 'login',
- 'login[email]' : 'yzhang@i9i8.com',
- 'login[password]' : ''
- }
- data = urllib.parse.urlencode(values)
- req = urllib.request.Request(url, data)
- req.add_header('Referer', 'http://www.python.org/')
- response = urllib.request.urlopen(req)
- the_page = response.read()
- print(the_page.decode("utf8"))
4、发送数据和header
- #! /usr/bin/env python3
- import urllib.parse
- import urllib.request
- url = 'http://localhost/login.php'
- user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
- values = {
- 'act' : 'login',
- 'login[email]' : 'yzhang@i9i8.com',
- 'login[password]' : ''
- }
- headers = { 'User-Agent' : user_agent }
- data = urllib.parse.urlencode(values)
- req = urllib.request.Request(url, data, headers)
- response = urllib.request.urlopen(req)
- the_page = response.read()
- print(the_page.decode("utf8"))
5、http 错误
- #! /usr/bin/env python3
- import urllib.request
- req = urllib.request.Request('http://www.jb51.net ')
- try:
- urllib.request.urlopen(req)
- except urllib.error.HTTPError as e:
- print(e.code)
- print(e.read().decode("utf8"))
6、异常处理1
- #! /usr/bin/env python3
- from urllib.request import Request, urlopen
- from urllib.error import URLError, HTTPError
- req = Request("http://www.jb51.net /")
- try:
- response = urlopen(req)
- except HTTPError as e:
- print('The server couldn't fulfill the request.')
- print('Error code: ', e.code)
- except URLError as e:
- print('We failed to reach a server.')
- print('Reason: ', e.reason)
- else:
- print("good!")
- print(response.read().decode("utf8"))
7、异常处理2
- #! /usr/bin/env python3
- from urllib.request import Request, urlopen
- from urllib.error import URLError
- req = Request("http://www.jb51.net /")
- try:
- response = urlopen(req)
- except URLError as e:
- if hasattr(e, 'reason'):
- print('We failed to reach a server.')
- print('Reason: ', e.reason)
- elif hasattr(e, 'code'):
- print('The server couldn't fulfill the request.')
- print('Error code: ', e.code)
- else:
- print("good!")
- print(response.read().decode("utf8"))
8、HTTP 认证
- #! /usr/bin/env python3
- import urllib.request
- # create a password manager
- password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
- # Add the username and password.
- # If we knew the realm, we could use it instead of None.
- top_level_url = "https://www.jb51.net /"
- password_mgr.add_password(None, top_level_url, 'rekfan', 'xxxxxx')
- handler = urllib.request.HTTPBasicAuthHandler(password_mgr)
- # create "opener" (OpenerDirector instance)
- opener = urllib.request.build_opener(handler)
- # use the opener to fetch a URL
- a_url = "https://www.jb51.net /"
- x = opener.open(a_url)
- print(x.read())
- # Install the opener.
- # Now all calls to urllib.request.urlopen use our opener.
- urllib.request.install_opener(opener)
- a = urllib.request.urlopen(a_url).read().decode('utf8')
- print(a)
9、使用代理
- #! /usr/bin/env python3
- import urllib.request
- proxy_support = urllib.request.ProxyHandler({'sock5': 'localhost:1080'})
- opener = urllib.request.build_opener(proxy_support)
- urllib.request.install_opener(opener)
- a = urllib.request.urlopen("http://www.jb51.net ").read().decode("utf8")
- print(a)
10、超时
- #! /usr/bin/env python3
- import socket
- import urllib.request
- # timeout in seconds
- timeout = 2
- socket.setdefaulttimeout(timeout)
- # this call to urllib.request.urlopen now uses the default timeout
- # we have set in the socket module
- req = urllib.request.Request('http://www.jb51.net /')
- a = urllib.request.urlopen(req).read()
- print(a)
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)_python的更多相关文章
- Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
出自 http://www.jb51.net/article/93125.htm
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理) 转
urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...
- 【转】Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的 ...
- Python3中使用PyMongo的方法详解
前言 本文主要给大家介绍的是关于在Python3使用PyMongo的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细介绍: MongoDB存储 在这里我们来看一下Python3下Mongo ...
- python中requests库使用方法详解
目录 python中requests库使用方法详解 官方文档 什么是Requests 安装Requests库 基本的GET请求 带参数的GET请求 解析json 添加headers 基本POST请求 ...
- php_DWZ-JUI中碰到的问题解决方法详解(thinkphp+dwz)
原文:php_DWZ-JUI中碰到的问题解决方法详解(thinkphp+dwz) 折腾了两天,dwz删除后,数据不能自动刷新,解决方案,直接看图 . 1. 删除.修改状态后无法刷新记录: 在dwz. ...
- PHP 中 16 个魔术方法详解
PHP 中 16 个魔术方法详解 前言 PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __constru ...
- 并发编程(六)Object类中线程相关的方法详解
一.notify() 作用:唤醒一个正在等待该线程的锁的线程 PS : 唤醒的线程不会立即执行,它会与其他线程一起,争夺资源 /** * Object类的notify()和notifyAll()方法详 ...
随机推荐
- Spring Boot中使用logback日志框架
说明:Spring Boot在最新的版本中默认使用了logback框架.一般来说使用时只需在classpath下创建logback.xml即可,而官方推荐使用logback-spring.xml替代, ...
- Eclipse运行Maven命令时出现:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.问题解决
错误: -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment varia ...
- NoSQL之Memcached
一.Memcached概念 Memcached是NoSQL产品之中的一个,是一个暂时性键值存储NoSQL数据库,过去被大量使用在互联网站点中,作为应用和数据库之间的缓存层,大大提高查询和訪问速度. M ...
- uva 10069 Distinct Subsequences 【dp+大数】
题目:uva 10069 Distinct Subsequences 题意:给出一个子串 x 和母串 s .求子串在母串中的不同序列的个数? 分析:定义dp[i][j]:x 的前 i 个字母在 s 的 ...
- [React] PureComponent in React
In this lesson, you will learn how to use PureComponent in React to reduce the number of times your ...
- Qt布局管理器的使用(一)
曾经对Qt的布局管理器掌握的还不清楚,今天特意学习了下.感觉收获还挺大的,特意拿出来和大家分享. 首先.要明确布局管理器的用处,及使我们的界面看起来比較整洁.美化.另外一点就是为了使我们的控件可以更随 ...
- Android MediaRecorder录音与播放
上一篇讲到了使用意图录音.这篇文章将使用MediaRecorder类来录音,从而提供很多其它的灵活性. 效果图: 源码奉上: <LinearLayout xmlns:android=" ...
- 自己定义控件 播放GIF动画
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- [经典面试题]在O(1)时间删除链表结点
[题目] 给定链表的头指针和一个结点指针.在O(1)时间删除该结点.链表结点的定义例如以下: struct ListNode { int value; struct ListNode* ...
- 【转载】SOAP协议介绍
SOAP是用在分散或分布的环境中交换信息的简单的协议,它是一个基于XML的协议,包括三个部分:封装定义了一个描述消息中包含什么内容以及如何处理它们的框架,编码规则用于表示应用程序定义的数据类型的实例, ...