zoukankan      html  css  js  c++  java
  • 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查看结果,比较不同。
     
     
    学习参考:
     
     
  • 相关阅读:
    sort
    usaco-3.1-humble-pass
    usaco-3.1-inflate-pass
    usaco-3.1-agrinet-pass
    usaco-2.4-fracdec-pass
    usaco-2.4-comhome-pass
    usaco-2.4-cowtour-pass
    usaco-2.4-maze1-pass
    usaco-2.4-ttwo-pass
    usaco-2.3-concom-pass
  • 原文地址:https://www.cnblogs.com/myshuzhimei/p/11776805.html
Copyright © 2011-2022 走看看