Pyhton網絡爬蟲實例_豆瓣電影排行榜_BeautifulSoup4方法爬取

-----------------------------------------------------------學無止境------------------------------------------------------html

前言:你們好,歡迎來到譽雪飛舞的博客園,個人每篇文章都是本身用心編寫,app

算不上精心可是足夠用心分享個人自學知識,但願你們可以指正我,互相學習成長。框架

 

轉載請註明:https://www.cnblogs.com/wyl-pi/p/10510397.html學習

 

不少小夥伴可定都是喜歡看電影的,好比特效炫酷逼真的好萊塢大片,情節感人真摯的愛情電影,打鬥激情四射的動做電影,,,,測試

因此我相信你們都有一個通問,我想看電影,可是呢到底什麼電影好看啊!!有沒有什麼推薦之類的,好比排行榜之類的還不是不少的,url

10個左右的(多了看不完還挺難受,但太多的話根本沒時間看完啊,有木有....)spa

So,咱們找一個你們都耳熟能詳的豆瓣影評,其在業內仍是較有權威的,嗯,,調試

For examplecode

你們應該看到了右下角的  "一週口碑榜 "  沒錯這個小排名我喜歡,就是說咱們想要找的,管你網頁其餘地方作得再華麗,宣傳的多麼天花亂墜仍是沒有咱這個口碑榜實在啊!!!orm

 

So,咱們的活來了,盤它,哦不,是爬它。

玩笑歸玩笑,言歸正傳,可能有的同志會說爲何你要爬蟲直接看不就行了?!我會微微一笑:「這麼沒技術含量的操做,請問有意思麼?」(雖然說我認可我這篇隨筆的技術水平也不高,

能夠絕不忌諱地說,很低,But!我相信本身的水平和技術含量會越愛越高的,畢竟我毫不甘心與此。再者說就是他這個更新一週一週的,本身每次上網也去查我是以爲挺麻煩的,不如

作個爬蟲直接代碼運行,麻煩一次方便之後,好吧若是你說我強詞奪理那就是吧,隨便嘍。)

打開網頁後,F12,點擊這個按鈕,而後定位到下圖這個框找到它屬於<table>標籤下的<tbody>標籤;這位後面咱們的爬取打下了鋪墊。(固然這是方法之一

 

 

方法之二:

直接快捷鍵Ctrl+U或者右鍵 「 查看網頁源代碼 」 ,而後Ctrl+F查找 「 徒手攀巖 」 ;

這下咱們就知道了咱們所要爬取網頁的基本框架是什麼樣的了,從而進行後續的操做。

 

代碼以下:

import requests
from bs4 import BeautifulSoup
import bs4

def getHtmlText(url):
    try:
        r = requests.get(url,timeout = 30)
        print("raise_stsus = {}".format(r.raise_for_status()))
        print("獲取狀態完畢")
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print("get information with error!")

def movieSoupList(movielist,demo):
    try:
        soup = BeautifulSoup(demo,"html.parser")
        tables = soup.find_all("table")
        #print("tables is {}\n\n".format(tables))
        tab = tables[1]
        #if isinstance(tab,bs4.element.Tag):
        #    print("yaoxi!!!!!!!!")
        #print("tab is {}\n\n".format(tab))    #tags = tab.find("tr")
        #print(type(tags))    #print("tags = {}\n".format(tags))
        tags = tab.contents    #print("tages {} ".format(tab.contents))

    #    *****  .contents  方法   *****

        #print(type(tab.contents)) #//<class'list'>    #i = 0
        for tr in tags:
            #i = i+1     #print("i = {}\n".format(i))
            #print("transfor finished")
            if isinstance(tr,bs4.element.Tag):
                tds = tr("td")

    #   *****   tr("td")這步也很關鍵    *****
                
                #print("tds {}".format(tds))#print("list is ok")
                movielist.append([tds[0].string,tds[1].string])
                #print("transfor finished")
                #print("movielist is {}".format(movielist))
    except:
        print("transfor error")

def printMovieList(movielist,num):
    model = "{0:^10}\t{1:^20}"
    print(model.format("排名","影片名",chr(12288)))
    try:
        for i in range(num):
            m = movielist[i]
            print(model.format(m[0],m[1],chr(12288)))
    except:
        print("printMovieList error\n")

def main():
    num = 10
    url = 'https://movie.douban.com/'
    movielist = []
    demo = getHtmlText(url)
    movieSoupList(movielist,demo)
    #print("movielist is \n{}\n\n".format(movielist))
    printMovieList(movielist,num)

main()

 

       我在代碼裏的註釋也很清楚了,若是還不懂能夠評論或私信我,裏面有我當時調試的測試代碼

刪除了一部分,剩下的大部分都註釋掉了。若是有的童鞋們想試試能夠像我這樣測試,而後一步

步接近本身想要的樣子,直至完成項目。

 

運行結果就是這樣:

 

 

總結:

       這個方法的可編輯性較高容易理解很簡單,但相對應的短板就是代碼冗長編寫麻煩費時若是出錯很差修改,

總之中規中矩,下一篇文章我將帶您欣賞一下Python的Xpath方法的魅力所在

 

若是以爲個人文章還不錯,關注一下,頂一下 ,我將會用心去創做更好的文章,敬請期待。

相關文章
相關標籤/搜索