BD電影搜索-自定義過濾器

實現概要說明

電影時,發現網站自帶的搜索功能可選項不多,於是乎寫了個腳本,實現按網站標籤結果二次搜索,獲取電影信息。需要注意的是,使用爬蟲腳本需要先用網站標籤搜索功能獲取搜索標籤頁結果的地址,然後把地址保存下來運行腳本。
標籤搜索使用說明

源代碼

#coding:utf-8
import urllib.request
from bs4 import BeautifulSoup
import time

# 訪問獲取網頁結果
def GetWeb(web_url):
    req = urllib.request.Request(web_url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36')
    rsp = urllib.request.urlopen(req)
    return rsp.read().decode('utf-8')

# 解析網頁結果
def ParseMovesTagPage(web_txt):
    page_mvs = []
    # print(web_txt)
    bs = BeautifulSoup(web_txt, 'html5lib')

    lt3 = bs.find_all('dl')
    for v in lt3:
        mv = ParseTagDl(v)
        if mv:
            page_mvs.append(mv)
    return page_mvs

def ParseTagDl(bs_dl):
    dd = {}
    dt = bs_dl.dt
    if not dt:
        return dd


    va = [v.string.strip() for v in dt.contents]
    va = [v for v in va if len(v)>0]

    if len(va)>=4:
        dd['name']   = va[1]
        dd['douban'] = va[2]
        dd['imdb']   = va[3]

    return dd

# 結果寫文件
def FileAdd(fn, txt):
    with open(fn, 'a+') as fd:
        fd.write(txt)

# 代碼測試
if __name__ == '__main__':
    fp = open('bd.txt', 'a+')
    # 根據搜索結果的標籤,改寫此處的tag數字編號
    web_url = r'http://www.bd-film.co/tag/58_'
    for i in range(1,1000):
        cur_url = web_url+str(i)+'.jspx'
        try:
            print(cur_url)
            txt = GetWeb(cur_url)
            mvs = ParseMovesTagPage(txt)
            for mv in mvs:
                # 條件過濾
                if mv['douban']>'8' or mv['imdb']>'8':
                    info = '%s \t %s \t %s'%(mv['douban'], mv['imdb'], mv['name'])
                    FileAdd('bd-高分劇情.txt', info+'\n')
                    print(info)
        except:
            print('error->'+cur_url)
            time.sleep(1)
    fp.close()

運行結果截圖

高分劇情電影

這樣就可以很開心地根據自己的需要找電影了,我一般喜歡隨大衆,所以寫成按電影評分搜索,嘿嘿嘿~~

謝謝您的關注,希望您喜歡

嘻嘻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章