-----------------------------------------------------------學無止境------------------------------------------------------html
前言:你們好,歡迎來到譽雪飛舞的博客園,個人每篇文章都是本身用心編寫,app
算不上精心可是足夠用心分享個人自學知識,但願你們可以指正我,互相學習成長。框架
轉載請註明:https://www.cnblogs.com/wyl-pi/p/10510397.html學習
不少小夥伴可定都是喜歡看電影的,好比特效炫酷逼真的好萊塢大片,情節感人真摯的愛情電影,打鬥激情四射的動做電影,,,,測試
因此我相信你們都有一個通問,我想看電影,可是呢到底什麼電影好看啊!!有沒有什麼推薦之類的,好比排行榜之類的還不是不少的,url
10個左右的(多了看不完還挺難受,但太多的話根本沒時間看完啊,有木有....)spa
So,咱們找一個你們都耳熟能詳的豆瓣影評,其在業內仍是較有權威的,嗯,,調試
For example:code
你們應該看到了右下角的 "一週口碑榜 " 沒錯這個小排名我喜歡,就是說咱們想要找的,管你網頁其餘地方作得再華麗,宣傳的多麼天花亂墜仍是沒有咱這個口碑榜實在啊!!!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方法的魅力所在。
若是以爲個人文章還不錯,關注一下,頂一下 ,我將會用心去創做更好的文章,敬請期待。