python模块: urllib模块详解 !!

news/2024/7/7 21:46:28

前言
相信大家在做一个Python项目的时候,肯定会用到模块,就想JAVA会用到JAR包一样,这样会让我们的开发更高效和更简洁,本节为大家介绍一个URLlib模块

在python中urllib模块提供上层接口,可以使用它下载读取数据,这里举个例子,把sina首页的html抓取下来显示出来.有2种方法可以实现.

1.urlopen(url, data=None, proxies=None)
    urlopen(url [, data]) -> open file-like object

创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。参数url表示远程数据的路径,一般是网址;参数data表示以post方式提交到url的数据;参数proxies用于设置代理.urlopen返回一个类文件对象.


#!/usr/bin/python2.5
import urllib

url = "http://www.sina.com"
data = urllib.urlopen(url).read()
print data```

root@10.1.6.200:~# python gethtml.py



<meta http-equiv="Content-type" content="text/html; charset=gb2312" />
<title>тK˗ҳ</title>

<meta name="keywords" content="тK,тKθ,SINA,sina,sina.com.cn,тK˗ҳ,ą»§,؊Ѷ" />

....`

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

urlretrieve方法直接将远程数据下载到本地。参数filename指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);参数reporthook是一个回调函数,当连接上服务器.以及相应的数据块传输完毕的时候会触发该回调.


#!/usr/bin/python2.5
import urllib

url = "http://www.sina.com"
path = "/root/sina.txt"
data = urllib.urlretrieve(url,path)```

root@10.1.6.200:~# python getsina.py
root@10.1.6.200:~# cat sina.txt



<meta http-equiv="Content-type" content="text/html; charset=gb2312" />
<title>тK˗ҳ</title>

<meta name="keywords" content="тK,тKθ,SINA,sina,sina.com.cn,тK˗ҳ,ą»§,؊Ѷ" />

....

不仅如此,这里写个爬虫小程序,可以把百度贴吧http://tieba.baidu.com/p/2236567282网页上的jpg图片依次下载下来.

root@10.1.6.200:~# cat getJpg.py

!/usr/bin/python2.5

import re
import urllib

def getHtml(url):

html = urllib.urlopen(url).read()
return html

def getJpg(html):

reg = r'src="(http://.*?\.jpg)"'
imgre = re.compile(reg)
imgList = re.findall(imgre,html)
x = 0
for imgurl in imgList:
    urllib.urlretrieve(imgurl,'%s.jpg' % x)
    x += 1       

html = getHtml("http://tieba.baidu.com/p/2236567282")
getJpg(html)`


root@10.1.6.200:~# python 11.py 
root@10.1.6.200:~# ls -l
total 1680
-rw-r--r-- 1 root root  38695 2013-04-11 23:32 0.jpg
-rw-r--r-- 1 root root  48829 2013-04-11 23:32 10.jpg
-rw-r--r-- 1 root root  51835 2013-04-11 23:32 11.jpg
-rw-r--r-- 1 root root  41688 2013-04-11 23:32 12.jpg
-rw-r--r-- 1 root root   1077 2013-04-11 23:32 13.jpg
-rw-r--r-- 1 root root  33989 2013-04-11 23:32 14.jpg
-rw-r--r-- 1 root root  41890 2013-04-11 23:32 15.jpg
-rw-r--r-- 1 root root  35728 2013-04-11 23:32 16.jpg
-rw-r--r-- 1 root root  44405 2013-04-11 23:32 17.jpg
-rw-r--r-- 1 root root  29847 2013-04-11 23:32 18.jpg
-rw-r--r-- 1 root root  44607 2013-04-11 23:32 19.jpg
-rw-r--r-- 1 root root  23939 2013-04-11 23:32 1.jpg
-rw-r--r-- 1 root root  45592 2013-04-11 23:32 20.jpg
-rw-r--r-- 1 root root  60910 2013-04-11 23:32 2.jpg
-rw-r--r-- 1 root root  39014 2013-04-11 23:32 3.jpg
-rw-r--r-- 1 root root  19057 2013-04-11 23:32 4.jpg
-rw-r--r-- 1 root root  64584 2013-04-11 23:32 5.jpg
-rw-r--r-- 1 root root  29297 2013-04-11 23:32 6.jpg
-rw-r--r-- 1 root root  39145 2013-04-11 23:32 7.jpg
-rw-r--r-- 1 root root   1059 2013-04-11 23:32 8.jpg

http://www.niftyadmin.cn/n/3777776.html

相关文章

PaddleFluid和TensorFlow基本使用概念对比 | PaddlePaddle专栏

深度学习平台的演化 时至今日&#xff0c;深度学习已成为事实上最流行的机器学习技术。学术界多年研究加上工业界的长期实践提出了若干有效的基本建模单元&#xff1a;全连接&#xff0c;卷积&#xff0c;循环神经网络等&#xff1b;设计各类训练技巧&#xff1a;初始化方法&am…

用shell截取sql数据

参照原帖http://blog.csdn.net/fantian830211/archive/2007/10/08/1815159.aspx首先创建一个PROC 输出参数。shell中执行&#xff0c;在最后print 参数。调用时直接引用上面的shell &#xff0c;将结果赋值给变量。用引用tail函数截取后几行。赋值给变量并输出。#fun1sqlplus -…

【云周刊】第175期:终于来了!重磅发布:阿里云负载均衡SLB率先支持IPv6!

2019独角兽企业重金招聘Python工程师标准>>> 本期头条 终于来了&#xff01;重磅发布&#xff1a;阿里云负载均衡SLB率先支持IPv6&#xff01; IPv6的设计初衷是用以解决IPv4地址枯竭问题&#xff0c;同时对IPv4进行大量改进&#xff0c;并最终取代IPv4。然而由于N…

sqlload使用小结!

sql load的一点小总结 sqlldr useridlgone/tiger controla.ctl LOAD DATA INFILE t.dat // 要导入的文件 // INFILE tt.date // 导入多个文件 // INFILE * // 要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容 INTO TABLE table_name // 指定装入的表 BADFILE…

python中逻辑运算符“+”的特殊之处

num num num 与 num num 的区别(其他语言中这俩种方式可以划等号&#xff0c;但是python中不可以)&#xff1a; num num num&#xff1a; num [100] def test(num):num num numprint(num) test(num) print(num) 结果&#xff1a; [100, 100] [100] num num &#xff1…

Android多线程之HandlerThread源码解析

想要了解 HandlerThread 的工作原理需要先对 Android 系统中以 Handler、Looper、MessageQueue 组成的异步消息处理机制有所了解&#xff0c;如果你还没有这方面的知识&#xff0c;可以先看我写的另一篇文章&#xff1a;Handler、Looper与MessageQueue源码解析 一、概述 先来了…

shellnbsp;输出数字左侧补0凑位数

printf "%02d\n" 8结果08printf "%03d\n" 8结果008