1. 程式人生 > >爬蟲實戰—豆瓣圖書爬蟲

爬蟲實戰—豆瓣圖書爬蟲

 前情概要 

感覺以前寫爬蟲有點依賴github上的程式碼,和網上的教程,這次打算從頭開始寫一個爬蟲,不用太難但是一定要都是自己寫的,所以打算拿豆瓣開始練習。

原始碼

https://github.com/Kratosssss/yt_learnning/blob/master/spyder/%E8%B1%86%E7%93%A3%E5%9B%BE%E4%B9%A6250.py

開始

提前構思好自己需要的資訊型別

book{

book_name,  書名

(?) book_originalname 由於一部分書在網頁上沒有這個標籤 所以放棄了

book_author, 作者

book_ score, 得分

book_quote ,一句箴言

}

選擇 豆瓣圖書 Top 250 頁面 

url = https://book.douban.com/top250?start=0

發現start用來控制頁面資訊,所以設一個迴圈就能得到所有頁面

然後首先是新增頭部
headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
        }

使用beautilfulsoup庫來得到需要的資訊

我使用的是css選擇器,因為自己本身前端了解多一點,發現

book_names = soup.select(".pl2 a")
for book_name in book_names:

 1 book_name = book_name.get_text()
 2 book_name = book_name['title']

兩種方式都可以得到名字但是前者會有很多空格和換行所以選擇第二種

依次得到所有元素後儲存至本地檔案中

    for book_name,book_author,book_score,book_quote in zip(book_names,book_authors,book_scores,book_quotes):
        book_name = '書名:' + str(book_name['title']) + '\n'
        book_author = '作者:' + str(book_author.get_text().split("/")[0]) + '\n'
        book_score = '評分:' + str(book_score.get_text()) + '\n'
        book_quote = '一句話:' + str(book_quote.get_text()) + '\n'
        data = book_name + book_author +book_score +book_quote
            # 儲存資料
        f.writelines(data + '=======================' + '\n')

成功 !