Urllib模块

1、模块说明

  Urllib库是Python中的一个功能强大、用于操作的URL,并在做爬虫的时候经常要用到的库。在Python2.X中,分Urllib库和Urllib库,Python3.X之后合并到Urllib库中,使用方法稍有不同,在此,本书中代码会以Python的新版,即Python3.X进行讲解,具体使用的是Python3.5.2。同时在本章中,我还会讲解如何处理异常等知识。

2、快速使用Urllib爬去网页:

导入对应的模块,读取网页内容

# 导入模块urllib
import urllib.request file = urllib.request.urlopen("http://www.baidu.com") # 打开网页
data = file.read() # 读取所有页面所有内容
dataline = file.readline() # 读取第一行
datalines = file.readlines() # 读取所有内容,列表形式存储,不推荐用此 # 存储文件
fhandle = open("baidu.html","wb") # 爬到的页面存储到本地
fhandle.write(data)
fhandle.close()
# 直接把网页存储到本地,适用于存储图片
urllib.request.urlretrieve(url="https://www.cnblogs.com/",filename="cnblogs.html")
urllib.request.urlcleanup() # urlretrieve执行后会产生一些缓存,清除 # 其他使用
print(file.info()) # 爬取页面的相关信息
print(file.getcode()) # 打印网页的状态码
print(file.geturl()) # 当前url # 200
# http://www.baidu.com

网页的编码和解码(中文字符要进行编码):

# 编码、解码
import urllib.request url_quote = urllib.request.quote("http://www.sina.com.cn")
print(url_quote)
# http%3A//www.sina.com.cn url_unquote = urllib.request.unquote(url_quote)
print(url_unquote)
# http://www.sina.com.cn

3、添加Headers属性:

# 添加报头
import urllib.request url = 'http://blog.csdn.net/weiwei_pig/article/details/51178226'
req = urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36')
data = urllib.request.urlopen(req).read()

 

4、设置超时时间:

# 超时时间
import urllib.request
import logging for i in range(1,100):
try:
file = urllib.request.urlopen("http://www.baidu.com",timeout=1)
data = file.read()
print(len(data))
except Exception as e:
logging.error(e)

5、Post提交数据:

# post 提交
import urllib.request
import urllib.parse url = "http://www.iqianyue.com/mypost"
postdata = urllib.parse.urlencode({
"name":"ceo@iqianyue.com",
"pass":"aA123456"
}).encode("utf-8") # 转化成byte类型
req = urllib.request.Request(url,postdata)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36')
data = urllib.request.urlopen(req)
print(data.getcode())
# 200

 

6、代理服务器的设置:

有时候同一个IP去爬取同一个网站上的页面,久了之后就会被网站屏蔽,这时就需要代理服务器了,可以从http://www.xicidaili.com/网站上去找代理服务器地址:

代码示例:

# 匿名代理
def urs_proxy(proxy_addr,url):
import urllib.request
proxy = urllib.request.ProxyHandler({'http':proxy_addr})
opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
urllib.request.install_opener(opener)
data = urllib.request.urlopen(url).read().decode('utf-8')
return data proxy_addr = "182.92.242.11:80"
data = urs_proxy(proxy_addr,"https://www.cnblogs.com/")
print(len(data))
# 39244

7、异常处理URLError

# 异常处理
import urllib.request
import urllib.error
try:
urllib.request.urlopen("http://www.githup.com")
except urllib.error.HTTPError as e:
print(e.code)
print(e.reason)
print(e)
# 403
# Forbidden
# HTTP Error 403: Forbidden

8、处理url

import urlparse  #python2
base_url = "http://192.168.1.66:8088"
split = urlparse.urlsplit(base_url)
print(split)
# SplitResult(scheme='http', netloc='192.168.1.66:8088', path='', query='', fragment='')

  

Python开发【模块】:Urllib(一)的更多相关文章

  1. Python核心模块——urllib模块

    现在Python基本入门了,现在开始要进军如何写爬虫了! 先把最基本的urllib模块弄懂吧. urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) ...

  2. [转]Python核心模块——urllib模块

    现在Python基本入门了,现在开始要进军如何写爬虫了! 先把最基本的urllib模块弄懂吧. urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) ...

  3. python开发模块基础:re正则

    一,re模块的用法 #findall #直接返回一个列表 #正常的正则表达式 #但是只会把分组里的显示出来#search #返回一个对象 .group()#match #返回一个对象 .group() ...

  4. python开发模块基础:异常处理&hashlib&logging&configparser

    一,异常处理 # 异常处理代码 try: f = open('file', 'w') except ValueError: print('请输入一个数字') except Exception as e ...

  5. python开发模块基础:os&sys

    一,os模块 os模块是与操作系统交互的一个接口 #!/usr/bin/env python #_*_coding:utf-8_*_ ''' os.walk() 显示目录下所有文件和子目录以元祖的形式 ...

  6. python开发模块基础:序列化模块json,pickle,shelve

    一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...

  7. python开发模块基础:time&random

    一,time模块 和时间有关系的我们就要用到时间模块.在使用模块之前,应该首先导入这个模块 常用方法1.(线程)推迟指定的时间运行.单位为秒. time.sleep(1) #括号内为整数 2.获取当前 ...

  8. python开发模块基础:collections模块&paramiko模块

    一,collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdic ...

  9. python开发模块基础:正则表达式

    一,正则表达式 1.字符组:[0-9][a-z][A-Z] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示字符分为很多类,比如数字.字母.标点等等.假如你现在要求一个位置&q ...

  10. Python开发——目录

    Python基础 Python开发——解释器安装 Python开发——基础 Python开发——变量 Python开发——[选择]语句 Python开发——[循环]语句 Python开发——数据类型[ ...

随机推荐

  1. linux下常用FTP命令 1. 连接ftp服务器

    1. 连接ftp服务器 格式:ftp [hostname| ip-address] a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密 ...

  2. JavaSE(八)之Collection总结

    前面几篇把集合中的知识大概都详细的说了一遍,但是我觉得还是要总结一下,这样的话,可以更好的理解集合. 一.Collection接口 首先我们要一张图来说明: Collection接口,它是集合的顶层接 ...

  3. haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)

    一.安装HAProxy 1.进入home目录,下载最新haproxy安装包. cd /home wget http://haproxy.1wt.eu/download/1.4/src/haproxy- ...

  4. 提高Web性能的前端优化技巧总结

  5. Oracle Apex 有用笔记系列 2 - 文件上传管理

    1. 页面设计 页面A有若干region, 当中一个region用于文件列表管理(包含显示,下载.删除).如图A. 在页面A有一button,点击它会调用页面B,页面B负责文件上传.如图B. 图A 图 ...

  6. mybatis由浅入深day02_3一对多查询

    3 一对多查询 3.1 需求(查询订单及订单明细的信息) 查询订单及订单明细的信息. 3.2 sql语句 确定主查询表:订单表 确定关联查询表:订单明细表 在一对一查询基础上添加订单明细表关联即可. ...

  7. Java集合----Collection工具类

    Collections 工具类 Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了 ...

  8. VC++第三方库配置-OpenSpirit 4.2.0 二次开发

    在VS中右击项目,点击属性 1.配置属性--常规--输出目录:Windows\VS2010\debug\ 2.配置属性--常规--中间目录:Windows\VS2010\debug\ 3.配置属性-- ...

  9. hadoop程序MapReduce之SingletonTableJoin

    需求:单表关联问题.从文件中孩子和父母的关系挖掘出孙子和爷奶关系 样板:child-parent.txt xiaoming daxiong daxiong alice daxiong jack 输出: ...

  10. dos命令临时和永久设置环境变量方法

    方法一:批处理中,修改环境变量,一次性有效(也就是在当前的脚本中有效)   CMD中运行:set path==%path%;d:/mypath   用 set path可以查看,当前的环境变量   方 ...