45321ttt 发表于 2016-12-2 08:27:20

Python之URLLIB

#!/usr/bin/env python
#coding:utf8
import urllib

def print_list(list):
    for i in list:

      print i

def demo():
    s=urllib.urlopen("http://dbspace.blog.iyunv.com")#打开URL
    lines=s.readlines()
    print s.read(100)#读出所有的数据

    print s.readlines#读出所有以列表方式显示出来

    print s.readline#只读出一行的数据,若要更多可以用for循环

    print_list(lines)#逐行打印出来,配上print_list

    print s.getcode()#打印应答码,可以返回的为200,不存在的为404

    ###

    info():返回http头部的信息

    msg=s.info()

    print msg.headers#http头的内容

    print msg.items()#解析过的头的列表

###通过dir(msg)方法可以看到更多的方法
##把远程的文件下载到本地(远程地址,保存文件名,下载进度)
def retrieve():
    urllib.urlretrieve("http://dbspace.blog.iyunv.com","index.html",reporthook=process)


def process(blk,blk_size,total_size):#监控当前下载状态进度信息reporthook(当前传输的块数,块大小,数据总大小)
def process(blk,blk_size,total_size):
    print '%d/%d - %.02f%'%(blk*blk_size,total_size,float(blk*blk_size)*100/total_size)
更多参数:
urllib.urlencode(参数)#加密
import urlparse
urlparse.parse_qs(参数)#解密
if __name__=="__main__":
    demo()

    retrieve()

def download(stock_list):
    for sid in stock_list:

      url='http://table.finace.yahoo.com/table.csv?s='+sid
      fname=sid+'.csv'

      urllib.urlretrieve(url,fname)##这样就是下载所有数据


def download_data_in_period(stock_list,start,end):
    for sid in stock_list:
      params={'a':start.month-1,'b':start.day,'c':start.year,'d':end.month-1,'e':end.day,'f':end.year,'s':sid}

      qs=urllib.urlencode(params)

      url=url+qs

      fname='%s_%d%d%d_%d%d%d.csv'%(sid,start.year,.....)

      urllib.urlretrieve(url,fname)

if __name__=="__name__":
    stock_list=['222.sz','3333.sz']

    download(stock_list)

    end=datetime.date(year=2016,month=12,day=1)

    start=datetime.date(year=2016,month=11,day=1)

    download_data_in_period(stock_list,start,end)

页: [1]
查看完整版本: Python之URLLIB