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

运行结果截图

高分剧情电影

这样就可以很开心地根据自己的需要找电影了,我一般喜欢随大众,所以写成按电影评分搜索,嘿嘿嘿~~

谢谢您的关注,希望您喜欢

嘻嘻

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值