Python 下載網頁的幾種方法

來源:互聯網
上載者:User

總結下,Python 下載網頁的幾種方法

1

 

 fd = urllib2.urlopen(url_link)

 data = fd.read()

 這是最簡潔的一種,當然也是Get的方法

 

2

通過GET的方法

def GetHtmlSource(url):

    try:
   
        htmSource = ''
       
        req = urllib2.Request(url)
      
        fd = urllib2.urlopen(req,"")
       
        while 1:
            data = fd.read(1024)
            if not len(data):
                break
           
            htmSource += data

        fd.close()
 
        del fd
        del req
       
        htmSource = htmSource.decode('cp936')

        htmSource = formatStr(htmSource)
        
        return htmSource
       
    except socket.error, err:
       
        str_err =  "%s" % err
        return ""

 

3

 通過GET的方法

def GetHtmlSource_Get(htmurl):

    htmSource = ""
   
    try:
       
        urlx = httplib.urlsplit(htmurl)
        conn = httplib.HTTPConnection(urlx.netloc)
        conn.connect()
        conn.putrequest("GET", htmurl, None)
       
        conn.putheader("Content-Length", 0)
        conn.putheader("Connection", "close")
        conn.endheaders()
       
        res = conn.getresponse()
        htmSource = res.read()
       
    except Exception(), err:
        trackback.print_exec()
        conn.close()
       
       
    return htmSource

   

通過POST的方法
def GetHtmlSource_Post(getString):

    htmSource = ""
   
    try:
        url = httplib.urlsplit("http://app.sipo.gov.cn:8080")
        conn = httplib.HTTPConnection(url.netloc)
        conn.connect()
        conn.putrequest("POST", "/sipo/zljs/hyjs-jieguo.jsp")
        conn.putheader("Content-Length", len(getString))
        conn.putheader("Content-Type", "application/x-www-form-urlencoded")
        conn.putheader("Connection", " Keep-Alive")
        conn.endheaders()

        conn.send(getString)
        f = conn.getresponse()
        if not f:
            raise socket.error, "timed out"
       
        htmSource = f.read()

        f.close()

        conn.close()
        
        return htmSource
       
    except Exception(), err:
       
        trackback.print_exec()
        conn.close()
       
       
    return htmSource

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.