BD電影搜尋 自定義過濾器

2021-08-19 13:35:24 字數 2002 閱讀 3940

找電影時,發現**自帶的搜尋功能可選項不多,於是乎寫了個指令碼,實現按**標籤結果二次搜尋,獲取電影資訊。需要注意的是,使用爬蟲指令碼需要先用**標籤搜尋功能獲取搜尋標籤頁結果的位址,然後把位址儲存下來執行指令碼。

# 訪問獲取網頁結果

defgetweb

(web_url):

req = urllib.request.request(web_url)

rsp = urllib.request.urlopen(req)

return rsp.read().decode('utf-8')

# 解析網頁結果

defparsemovestagpage

(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:

return page_mvs

defparsetagdl

(bs_dl):

dd = {}

dt = bs_dl.dt

ifnot 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

# 結果寫檔案

deffileadd

(fn, txt):

with open(fn, 'a+') as fd:

fd.write(txt)

# **測試

if __name__ == '__main__':

fp = open('bd.txt', 'a+')

# 根據搜尋結果的標籤,改寫此處的tag數字編號

web_url = r''

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')

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

自定義過濾器

這裡的過濾器的作用主要是在業務邏輯裡面判斷,傳遞的引數是否有誤,然後在實現類裡面去判斷具體的業務資料,執行流程和servlet的過濾器相類似,但是執行時機和作用大不相同,servlet的執行時機是在請求資源,在達到control之前去執行,通過執行鏈,我們的這個過濾器是在control裡,如下.先定...

自定義過濾器和全域性過濾器

過濾器中必須有返回值 一般使用花括號 插值,管道符前是要過濾的元素,管道符之後是過濾方法 p 過濾方法中有乙個引數,這個引數就是傳進來的要過濾的元素 過濾器 filters 使用過濾器時出現死迴圈 因為在將原陣列排序後賦值給原陣列,引用空間沒有變化,過濾一直在執行 解決辦法 使用擴充套件符將陣列賦值...

自定義時間過濾器

實現步驟 第一步,引導入 datetime 第二步,引入乙個建立時間,或者 直接寫死乙個時間 第三步,註冊乙個時間過濾器 第四步,實現過濾器的 第五步,在模板中呼叫 示例 一 字典中的 create time datetime 2017,10,20,16,19,0 二 過濾器 def handel ...