實現概要說明
找電影時,發現網站自帶的搜索功能可選項不多,於是乎寫了個腳本,實現按網站標籤結果二次搜索,獲取電影信息。需要注意的是,使用爬蟲腳本需要先用網站標籤搜索
功能獲取搜索標籤頁結果的地址,然後把地址保存下來運行腳本。
源代碼
#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()
運行結果截圖
這樣就可以很開心地根據自己的需要找電影了,我一般喜歡隨大衆,所以寫成按電影評分搜索,嘿嘿嘿~~