urllib

urllib库实现:从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据。

urllib模块urlopen()函数:urlopen(url, data=None, proxies=None)
创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。
参数url表示远程数据的路径,一般是网址。
参数data表示以post方式提交到url的数据(提交数据的两种方式:post与get)。
参数proxies用于设置代理。
 
urlopen返回 一个类文件对象(fd),它提供了如下方法:
read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样。
info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息(header)。
getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到。
geturl():返回请求的url。
 
代码示例
import urllib2
doc=urllib2.urlopen("http://www.baidu.com")
print doc.geturl()
print doc.info()
print doc.readline(20)
 
将具体图片从远程下载到本地并保存
import urllib
url = "http://www.xiaohuar.com/d/file/20170318/a5e3460ff46d07.jpg"
urllib.urlretrieve(url,'123.jpg')
 
简单实用的完整代码示例:将某个页面所有符合条件的图片下载到本机
#coding =utf-8
import urllib
import urllib2
import re
 
def getHtml(url):
    page = urllib2.urlopen(url)  ##打开页面
    htmla = page.read() ##获取目标页面的源码
    return htmla
 
def getImg(html):
    reg = 'src="(.+?\.png)"' ##正则表达式筛选目标图片格式,有些是'data-original="(.+?\.jpg)"'
    img = re.compile(reg)
    #html = html.decode('utf-8')  ##编码方式为utf-8
    imglist = re.findall(img, html) ##解析页面源码获取图片列表
    
    for i in range(len(imglist)):  
       imgurl = imglist[i]
       imgurl="http:"+imgurl
       urllib.urlretrieve(imgurl,'%s.jpg'% (i+1)) ##将图片从远程下载到本地并保存
 
def main():
    html = getHtml("https://www.shangxueba.com/sitemap/sitemap.htm")
    getImg(html)
    print 'End!'
 
main()
 
 
注意:
html = getHtml("https://www.baidu.com")获取不到图片src
html = getHtml("http://www.baidu.com")可以获取图片src
可以用print html查看结果,比较不同。
 
 
学习参考:
 
 
posted @ 2019-11-01 14:27  数之美  阅读(181)  评论(0编辑  收藏  举报