zoukankan      html  css  js  c++  java
  • python3 爬取电影天堂最新电影

    '''
    作业
    爬去dytt 2019新片精品  -> 把所有电影的名字, 主演, 下载链接. 放在一个json文件里
    {
        {"main_people": ["井柏然", "张一山"], "name": xxxx, "url":},
        {},
        {}
    }
    要求: 代码合理性
    '''
    from urllib.request import urlopen
    import re
    import json
    
    def get_dytt_url(homepage):
        index_content = urlopen(homepage).read().decode("gbk")  # 获取电影天堂主页源代码
        index_obj = re.compile(r"最新电影下载</a>]<a href='(?P<film_url>.*?)'>", re.S)  # 2019新片精品链接
        return index_obj.finditer(index_content)  # 创建一个迭代器
    
    def get_dytt_info(film_url_ite):
        for k, fil_url in enumerate(film_url_ite, 1):  # 遍历电影每个url
            print(k, homepage + fil_url.group("film_url"))
            film_content = urlopen(homepage + fil_url.group("film_url")).read().decode("gbk")  # 获取2019新片精品源代码
            film_obj = re.compile(r'◎译  名(?P<trans_name>.*?)<br />.*?◎片  名(?P<film_name>.*?)<br />.*?'
                                  r'◎主  演(?P<film_actor>.*?)<br /><br />.*?<td style="WORD-WRAP: break-word" '
                                  r'bgcolor="#fdfddf"><a href="(?P<down_url>.*?)">', re.S)
            yield film_obj.finditer(film_content)  # 生成器函数
    
    def record_dytt_info(film_ite, json_file, i):
        for film in film_ite:  # 遍历每部电影
            film_dict = {}
            film_dic = {}
            film_dic['trans_name'] = film.group("trans_name").strip().replace('&middot;', '·')  # 电影译名放入字典
            film_dic['film_name'] = film.group("film_name").strip().replace('&middot;', '·')  # 电影名放入字典
            farts_lst = film.group("film_actor").strip().split('<br />')  # 主演列表
            farts = []
            for art in farts_lst:  # 遍历主演
                farts.append(art.strip().replace('&middot;', '·'))  # 字符串替换
            film_dic['film_actor'] = farts  # 主演放入字典
            film_dic['down_url'] = film.group("down_url").strip()  # 下载url放入字典
            film_dict[i] = film_dic  # 将字典放入电影数数字典
            mode_type = "w" if i == 1 else "a"  # 当i=1时,清空json文件,否则追加写入
            with open(json_file, mode=mode_type, encoding="utf-8") as f:
                f.write(json.dumps(film_dict, ensure_ascii=False)+",
    ")
    
    if __name__ == "__main__":
        homepage = "https://www.dytt8.net"  # 电影天堂主页
        film_url_ite = get_dytt_url(homepage)  # 电影url迭代器
        for i, film_info_ite in enumerate(get_dytt_info(film_url_ite), 1):  # 遍历迭代器函数
            record_dytt_info(film_info_ite, "film_info.json", i)    #  获取电影的主演/名字/下载链接
  • 相关阅读:
    程序员的健康问题
    比特币解密
    浅谈比特币
    一款能帮助程序员发现问题的软件
    微软为什么总招人黑?
    写了一个bug,最后却变成了feature,要不要修呢?
    不管你信不信,反正我信了
    Excel工作表密码保护的破解
    pip笔记(译)
    super
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/10848149.html
Copyright © 2011-2022 走看看