Python urllib和urllib2模块学习(一)

摘要:
数据=无,代理=无)为指定的URLoreadfrom创建类似文件的对象。urlop-en返回一个类文件对象,info():baidu=urllib。urlop-en('http://www.baidu.com')>日期:最大年龄=86400过期时间:81连接:

(参考资料:现代魔法学院 http://www.nowamagic.net/academy/detail/1302803

Python标准库中有许多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib和urllib2 这个 HTTP 客户端库。这里总结了一些 urllib和urlib2 库的使用细节。

Python urllib 库提供了一个从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据。

一、urllib常用函数介绍:

1. urlopen()函数:即创建一个类文件对象为指定的 url 来读取。

可以使用help(urllib.urlopen)查看函数说明。

urlopen(url, data=None, proxies=None)
Create a file-like object for the specified URL to read from.

urlopen返回一个类文件对象,它提供了如下方法:

read(),readline,readlines,fileno和close:  这些方法的使用和文件对象一样;

info(): 返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息。

getcode():返回Http状态码,如果是http请求,200表示请求成功完成,404表示网址没有找到。

getutl: 返回请求的url地址。

示例:

>>>import urllib

>>>baidu = urllib.urlopen('http://www.baidu.com')

>>>baidu.read()

>>> print baidu.info()

输出:

Date: Fri, 24 Apr 2015 05:41:40 GMT
Server: Apache
Cache-Control: max-age=86400
Expires: Sat, 25 Apr 2015 05:41:40 GMT
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
ETag: "51-4b4c7d90"
Accept-Ranges: bytes
Content-Length: 81
Connection: Close
Content-Type: text/html

>>>for line in baidu:            #等价于read(),就像在操作本地文件,将网页数据打印出来。

    print line,

  baidu.close()

补充:

  • urllib.open的参数有特别要示,要遵循一些网络协议,比如http,ftp,也就是说在网址的开头必须要有http://或ftp://如:

  urllib.urlopen('http://www.baidu.com')

  urllib.urlopen('ftp://192.168.1.200')

  • 若要使用本地文件,就需要在前面加filt关键字,如:

  urllib.urlopen('file:nowangic.py')

  urllib.urlopen('file:F: esthelloworld.py')

2. urlretrieve()函数:直接将远程数据下载到本地。

可以使用help(urllib.urlretvieve)查看函数说明

  Help on function urlretrieve in module urllib:

  urlretrieve(url, filename=None, reporthook=None, data=None)

  • 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
  • 参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
  • 参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。

 示例1:

>>>urllib.urlretrieve('http://www.soso.com','c://soso.html')

('c://soso.html', <httplib.HTTPMessage instance at 0x0000000005187A48>)

示例2:下面是urlretrieve()下载文件实例,可以显示下载进度。

#coding:utf-8

import urllib

def cbk(a,b,c):
  """
  @a: 已经下载的数据块
  @b: 数据块的大小
  @c: 远程文件的大小
  """
  per = 100.0 *a*b/c
  if per >100:
    per = 100
  print '#%d%%'% per

url = 'http://www.soso.com'
local = 'c://test//soso.html'
urllib.urlretrieve(url,local,cbk)

 

示例3:爬虫练习: 

#-*-coding:utf-8-*-

""" 爬虫练习

Date:06-15-2015

"""

import urllib

import re

#获取指定url网页内容

def getHtml(url):

  page = urllib.urlopen(url)  

  html = page.read()  

  return html

#利用正则表达式将指定的图片下载

def getImg(html):  

  reg = 'src="http://t.zoukankan.com/(.*?.jpg)" pic_ext'  

  regimg = re.compile(reg)

    imglist = re.findall(regimg,html)  

  x = 0  

  for img in imglist:   

    urllib.urlretrieve(img,'%s.jpg' % x)   

    x+=1

Html = getHtml('http://tieba.baidu.com/p/3825178610')

Img = getImg(Html)

 

免责声明:文章转载自《Python urllib和urllib2模块学习(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(尺取法)HDUredis 安装配置(开机启动)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SVN安装

Svn 搭建教程 一、首先准备三个软件: 1.VisualSVN-Server-3.8.1-x64(svn服务端) 2.TortoiseSVN-1.10.0.28176-x64-svn-1.10.0.msi(svn客户端) 3.LanguagePack_1.10.0.28176-x64-zh_CN.msi(TortoiseSVN 的汉化包) 软件下载路径...

maven和gradle的全局阿里云镜像代理

Maven:~/.m2/settings.xml <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-...

springboot使用xml配置dubbo读取yml占位符

约定优于配置是springboot简化配置的思路,其中它提供的自动配置、基于注解配置为我们搭建项目框架带来了很大的便利。 使用springboot的项目跟仅使用spring的项目相比,少了很多xml配置文件,基于自动配置或者使用注解和配置类就可完成大多数配置。 springboot + dubbo搭建微服务工程:(springboot版本2.0.4.REL...

暴力猴

https://www.52pojie.cn/thread-614101-1-1.html 不建议阅读者: 前端大神 想要深入学习(涉及到分析挖掘调用网站中js算法/自己写算法)油猴脚本的读者【备注:楼主也不会,楼主也很绝望啊...】 阅读以下内容所需知识: javascript/jQuery基础知识【李炎恢的JavaScript教程(http://...

云盘项目——FastDFS

在学习云盘项目总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。 12-云盘项目- 01天  FastDFS 目录:一、课程安排二、项目1、项目整体架构2、web服务器3、分布式文件系统4、数据库和文件系统5、fastDFS三个角色和它们之间的关系6、fastDFS集群(了解)7、fastDFS安装8、追踪器配置文件修...

Github Actions 还能做这些事

前言 最近公司内部项目的发布流程接入了 GitHub Actions,整个体验过程还是比较美好的;本文主要目的是对于没有还接触过 GitHub Actions的新手,能够利用它快速构建自动测试及打包推送 Docker 镜像等自动化流程。 创建项目 本文主要以 Go 语言为例,当然其他语言也是类似的,与语言本身关系不大。 这里我们首先在 GitHub 上创...