天天看點

beautifulsoup爬取網頁中的表格_Python爬蟲爬取BT之家找電影資源

beautifulsoup爬取網頁中的表格_Python爬蟲爬取BT之家找電影資源

一、寫在前面

最近看新聞說聖城家園(SCG)倒了,之前BT天堂倒了,暴風影音也不行了,可以說看個電影越來越費力,國内大廠如企鵝和愛奇藝最近也出現一些幺蛾子,雖然目前版權意識雖然越來越強,但是很多資源在這些主流視訊網站上面依然沒有,我平時看電影又習慣下載下傳下來再看,是以每次看電影找資源就很麻煩,花了點時間,于是就有了這個程式。

beautifulsoup爬取網頁中的表格_Python爬蟲爬取BT之家找電影資源

二、目的

輸入一部電影的名字,幫我到BT之家上面看看有沒有,如果有就把下載下傳連結複制給我。

三、設計思路

入門Python其實很容易,但是我們要去堅持學習,每一天堅持很困難,我相信很多人學了一個星期就放棄了,為什麼呢?其實沒有好的學習資料給你去學習,你們是很難堅持的,這是小編收集的Python入門學習資料關注,轉發,私信小編“01”,即可免費領取!希望對你們有幫助
beautifulsoup爬取網頁中的表格_Python爬蟲爬取BT之家找電影資源

本來想的是直接爬取首頁最近釋出的電影,然後取判斷有沒有,後來想了一下,為什麼不直接使用網站的搜尋功能呢?

四、開始爬蟲

4.1.分析網站

打開網站搜尋一個結果,發現在網址裡面直接修改連結的内容就能到達搜尋頁面,那這樣就更簡單。

beautifulsoup爬取網頁中的表格_Python爬蟲爬取BT之家找電影資源

先讓使用者輸入一部電影的名字,直接生成連結。

# 要求輸入電影名inputname = input('' + '請輸入您要搜尋的電影:')# 連結是用網站的搜尋功能url = "http://www.6btbtt.com/search-index-keyword-" + inputname + ".htm"
           

接下來再看搜尋結果是什麼樣的,使用審查元素看看,就會看到搜尋結果裡面電影名字和連結會在一個a标簽裡面,類型為subject_link thread-old read

beautifulsoup爬取網頁中的表格_Python爬蟲爬取BT之家找電影資源

至此網站就分析完成了

4.2.開始爬取過程

剛才已經得到了電影名和網站,那麼下面直接獲得搜尋結果頁面的内容就行,用requests擷取内容,擷取後順便用beautifulsoup解析一下,解析後的東西就是有格式的,這樣才能進行下一步操作。

# 擷取網頁内容并用beautifulsoup解析一下soup = BeautifulSoup(requests.get(url).text,'lxml')# 給出找到第一個結果,網站搜尋結果就是把最新的排在前面,是以一個結果就夠了movies = soup.find('a','subject_link thread-old')
           

然而現在我們是得到一段内容,它不光包含電影标題和連結,還包含其他的東西,我們要做的就是把電影标題和連結分别提取出來。

# 直接輸出電影和連結try:    link = movies.get('href')    name = movies.text  ####這裡用的是text,因為标簽下面還有标簽,是string無法擷取文本内容    print('' + name)    print(link + '')except:    print("沒有找到這部電影或程式發生未知錯誤")
           

這裡用try和except來捕捉程式回報,就是說假如擷取的内容有問題,那程式不崩潰,就執行其他的或者進行下一步操作

至此,我們已經得到了電影和連結了,爬蟲過程也算結束了。

4.3判斷爬取結果和使用者輸入

由于電影标題出來包含真正的電影名還包含清晰度、年代、格式等等這些資訊,通常是這樣的

[BT下載下傳][小醜][BD- MKV/2.12GB][英語中英字幕][1080P][DC年度精彩大片藍光版]
           

這些我們都不要,在把它分割出來,單獨取出電影名字,分割方法就是前面是 “下載下傳][” 後面是“][”,取中間文本就可以。

# 這是用于從網頁的電影标題裡面分割出真正的電影名def get_str_btw(s,f,b):    par = s.partition(f)    return (par[2].partition(b))[0][:]try:    mname = (get_str_btw(name,"下載下傳][","]["))except:    print("無法比對搜尋結果")
           

單獨取出電影名字後進行比對,這裡隻是簡單地進行文字比對,本來應該可以多爬取幾個結果,然後模糊搜尋進行比對的。

# 判斷輸入的和擷取到的電影名字是否比對if mname == inputname:    print("電影有啦!連結已複制!祝您觀影愉快!" + '')    pyperclip.copy(link)else:    print("我給您找到了這個!")
           

最後再加上一個讓程式運作完等一下的指令

# 程式執行完不要馬上關閉視窗os.system("pause")
           

至此,這個程式就完成了。

運作截圖

beautifulsoup爬取網頁中的表格_Python爬蟲爬取BT之家找電影資源

五:注意事項

5.1.導入子產品的時候如果發現不能導入,可能是缺少c++運作庫,去下載下傳官方工具安裝就行;

5.2網站裡面看似相同的元素标簽可能不同,比如那個熱門電影和新電影标簽不一樣,一開始周遊爬取的時候發現總是報錯;

5.3一定要用tryexcept來避免出現意外;

程式可能沒有意義,但生命不息,折騰不止。