zoukankan      html  css  js  c++  java
  • python爬虫实战1

    转载于:http://blog.csdn.net/dongnanyanhai/article/details/5552431

    首先推荐一个网站:中医世家,这个网站上有很多关于中医的资料,光是提供的中医书籍就有317Mb,全都是CHM格式,资料非常全面。
      正因为这个网站有这么多的好东西,但是我又懒得一本书一本书的下载,所以,我就……用Python直接解析了几个书籍下载页面的地址,把所有的书籍的下载地址都弄到手,顺便还下载了,呵呵呵,省得一个页面一个页面的打开!
     

    #!/usr/bin/env python
    #coding=utf-8
    #这段代码是用来下载“中医世家”网站上的书籍的,很不好意思了!
    import urllib2,urllib,os
    from BeautifulSoup import BeautifulSoup
    #定义书籍链接列表
    mainbooklink = ["http://www.zysj.com.cn/lilunshuji/1index.html",
            "http://www.zysj.com.cn/lilunshuji/5index.html",
            "http://www.zysj.com.cn/lilunshuji/20index.html",
            "http://www.zysj.com.cn/lilunshuji/25index.html"]
    bookdir = [u"d://book//中医教材//",u"d://book//中医著作//",u"d://book//实用手册//",
                u"d://book//西医备考//"]
    chmname = [] #chm电子书中文名字
    chmbooklink = [] #对应chm的下载地址
    #该函数实现获取一个地址后马上下载该书籍
    def getbooklink(url):
        #检测url地址——暂时略了!
        
        #获取url地址的网页,并使用BeautifulSoup进行解析
        page = urllib2.urlopen(url)
        soup = BeautifulSoup(page)
        
        #处理url,取得其前部地址,用以确定下面得到的地址的完全地址
        #urllen = len(url)
        
        
        for i in soup('li'):
            #print i.a.string.encode('gb2312'),i.a['href']
            chmfilename = i.a.string
            bookfilelink = "http://www.zysj.com.cn"+i.a['href']
            
            page = urllib2.urlopen(bookfilelink)
            soup =BeautifulSoup(page)
            ti = u"下载电子书:"+chmfilename+".chm"
            for k in soup('a',title = ti):
                chmname.append(chmfilename+'.chm')
                downlink = "http://www.zysj.com.cn"+k['href']
                chmbooklink.append(downlink)
                print chmfilename.encode('gb2312')+'.chm',downlink
    def downbook(filename,url,dirn):
        #urllib.urlretrieve(url, filename)
        if not os.path.exists(bookdir(dirn)):
            os.makedirs(bookdir(dirn))
            
        print "开始下载:".decode('utf-8').encode('gb2312'),filename.encode('gb2312')
        filename = bookdir[dirn]+filename
        urllib.urlretrieve(url,filename)
        print "下载完成!".decode('utf-8').encode('gb2312')
    
    if __name__=="__main__":
        dirn = 0
        for i in mainbooklink:
            getbooklink(i)
            for j in range(0,len(chmname)):
                downbook(chmname[j],chmbooklink[j],dirn)
            chmname = []
            chmbooklink = []
            dirn = dirn+1
        
        
        
    """
    这一小段代码是用来学习查找字符串里面出现的某个字符的呃位置,我把所有的位置都取出来了,接下来想怎样就能怎样了!
    a ="http://www.zysj.com.cn/lilunshuji/1index.html"
    b = 0
    c = len(a)
    while 1:
        b = a.find('/',b,c)
        print b
        b = b + 1
        if b == 0:
            break
    """

    这段代码中缺了对空格的检测,所以好几部关于中医的字典是没有被解析出来的,只能手工下了,不多!

  • 相关阅读:
    “连城决”——预示2008年手机营销体式格式新打破
    都会演出连城诀—诺基亚N78决战入手入手了!
    Lyx:阔别单调的 LaTeX 节制命令
    [转载]Oracle 11g R1下的自动内存经管(2)
    假造化手艺是决胜企业IT化的关头
    请各位博友对HyperV的运用终了指摘
    有199元的Office,还要用盗版吗?
    十一回南通,当晚和同学去小石桥附近的网吧
    Windows 消息
    WinAPI: 钩子回调函数之 MsgFilterProc
  • 原文地址:https://www.cnblogs.com/youxin/p/3190425.html
Copyright © 2011-2022 走看看