读书十余载,以为能像古人一样才高八斗,满腹锦纶。可事实是胸无点墨,别无所长。仰星辰,观古今之差。同为寒窗十载,理应差别不会有这么大。可是自己痛定思痛,我们却差古人太多,古有头悬梁锥刺股,凿壁偷光之为,而我们生活安逸美好。安逸是好,但会让人逐渐堕落,不思进取。

     我虽无面壁,却有面壁之实。今日,初学Python,让我感触良多,同为万物之灵,却有如此大的差别。最大的错误在于我们缺少奋发求学的信心、缺少一往无前的勇气、缺少止于至善的恒心。于是,在Python这一门当今世上不可或缺的一门知识上,我亦不能落人于后。因此,我要全力奋战,竭尽全力去学好这门知识。让我的世界不是迷茫的一片,让这门知识成为我世界中一颗茁壮成长的树苗。让我的人生不后悔,不留遗憾。

     Python对于我来说,并不陌生,因为这是一门编程语言,也属于一门解释性语言。比起之前所学的语言要简单的多。所以对于有点程序基础的我来说,入门真的是很简单,我才学两三天,便大致掌握了基础知识。于是,在今天,我用Python爬取了一部小说,这对于我这个初学者来说是一个很大的进步。

BeautifulSoup,它的作用是将一段文档传入BeautifulSoup 的构造方法,就能得到一个文档的对象, 可以传入一段字符串或一个文件句柄。

 

     爬取网页的代码主要是:

# 获取网页  
def getHtml(src):  
    page = requests.get(src)  
    html = page.content 
    return html

这个主要是网页中图片下载:

# 定义回调方法,计算下载进度  
def cbk(a, b, c):  
    '''''  
    a:数据块数量 
    b:数据块大小 
    c :文件大小 
     '''  
    pro = 100 * a * b / c  # 计算当前进度  
    if pro > 100:  
        pro = 100  
    print '当前下载进度:', '%' + '%4.2f' % pro

这个就是爬取小说部分代码,它主要是从节点开始,然后一章一章的爬取,之后整理。

def getText(html):
    global i
    i +=i
    soup = bs(html,'lxml')
    tip = soup.find_all("div",attrs={"class":"content"})
    for t in tip:
        for h in t.find_all('h1'):
            with open('1.txt','a+')as f:
                text = h.getText().encode('utf-8')
                squencel =["\t","\t",text,"\n","\n"]
                f.writelines(squencel)
                squencel = []
        for st in t.find_all('div',class_="showtxt"):
            #文本处理,去除首尾空格及中间空格,去除空格后换行空两个字符
            text1='\n  '.join(st.text.strip().split()).encode('utf-8')
            try:
                with open('1.txt','a+')as f1:
                    squence2=['  ',text1,'\n','\n','\n','\n']
                    f1.writelines(squence2)
                    squence2 = []
            except Exception as e:
                print '写入错误:',e
            else:
                print'第',i,'章写入成功'
        for a in t.find_all('a'):
            if a.getText()=='下一章'.decode('utf-8'):
                newhtml = 'http://www.biqukan.com'+a['href']
                getHtml(newhtml)
                with open('a.txt','a')as f2:
                    f2.writelines(newhtml)

                    f2.writelines('\n')

 

以上主要是我这个菜鸟的简单介绍而已,由于时间也不早了,改天再给完整的代码了。有不足之处,望诸位大神包含体谅。毕竟初生牛犊不怕虎,所以我就写了这简单的几段话,还请笑纳。