python+selenium实现在某瓣上自动批量获取中文电影的英文名称
  Ysot1xdt9qNS 2023年11月02日 109 0

一、需求背景 知道一些电影的中文名称,但是想在国外网站上,查一下这些中文电影的评分。因此就必须知道这些中文电影的英文名称是什么,由此诞生次脚本

  二、实现思路 通过selenium,自动进入某瓣网站,然后自动输入中文名称,查询获取到电影详情信息中的英文别名。 本脚本中的批量中文电影是通过列表形式传入,还可以进一步优化为通过读取文件输入;另外本脚本最后获取结果是通过控制台打印,同样也可以优化最后写入文件。   三、实现代码

#!/usr/bin/env python
# -*- coding: UTF-8 -*-


'''
@Project :base_python
@File    :222222
@Author  :lzc
@Date    :2023/3/24
@Description :
'''

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from selenium.webdriver.common.keys import Keys




#检验是否含有中文字符
def is_contains_chinese(strs):
    for _char in strs:
        if '\u4e00' <= _char <= '\u9fa5':
            return True
    return False


def get_english_names(names,years,results):
    for i,name in enumerate(names):
        time.sleep(3)
        # 设置 Chrome 驱动路径,注意需要与你的浏览器版本匹配
        chromedriver_path = 'D:\Python\install\Scripts\chromedriver'

        # 创建 Chrome 驱动实例
        driver = webdriver.Chrome(executable_path=chromedriver_path)
        # 设置豆瓣电影页面链接
        douban_movie_url = 'https://movie.douban.com/chart'
        # 打开页面
        driver.get(douban_movie_url)
        time.sleep(2)
        # 获取到输入框,输入电影中文名称和电影年份
        driver.find_element(By.ID, 'inp-query').send_keys(name+years[i])
        time.sleep(2)
        #下发查询
        driver.find_element(By.XPATH,"//div[@class='inp-btn']/input").click()
        # 等待页面加载完成
        wait = WebDriverWait(driver, 10)
        wait.until(EC.presence_of_element_located((By.ID, 'root')))
        # 获取查询结果中的所有结果集
        all_result = driver.find_elements(By.XPATH, "//*/div[@class='item-root']")

        # 循环所有电影结果集,通过电影名称和年份确定是否为需要的电影,找到第一个后就停止检索
        detail_info = ''
        for move in all_result:
            try:
                info = move.find_element(By.XPATH, "//*/div[@class='title']/a").text
                if info.startswith(name) and info.endswith('('+years[i]+')'):
                    detail_info = move.find_element(By.XPATH, "//*/div[@class='meta abstract']").text
                    break
            except Exception as e:
                print(e.args)
                pass
            continue

        if detail_info!='':
            # 对电影信息做简单的分割提取,拿到具体英文名称  中国大陆 / 剧情 / Rickshaw Boy / 125分钟
            infos = detail_info.split(' / ')
            # 判断倒数第二个字符串是否包含中文,如果包含中文,说明不是英文电影名称,则取倒数第三个作为英文电影名称
            if is_contains_chinese(str(infos[-2].replace(' ',''))):
                results[name] = infos[-3]
            else:
                results[name] = infos[-2]
        else:results[name] = ''
        # 关闭浏览器
        driver.quit()
        print(results)
        print(results.values())
    return results


if __name__ == '__main__':
    names_80 = ['恋恋风尘', '阿郎的故事', '秋天的童话', '缘分', '奇迹', '骆驼祥子', '海滩的一天', '青梅竹马', '黄土地', '孩子王', '学校风云', '人生', '上海滩', '为你钟情','老井', '搭错车', '等待黎明', '何必有我', '鲁冰花', '摇滚青年']
    years_80 = ['1986','1989','1987','1984','1989','1982','1983','1985','1984','1987','1988','1984','1983','1985','1986','1983','1984','1985','1989','1988']
    names_90 = ['小武','喜剧之王','重庆森林','阳光灿烂的日子','甜蜜蜜','阿飞正传','牯岭街少年杀人案','堕落天使','天若有情','我的父亲母亲','半生缘','偷偷爱你','阮玲玉','风月','星愿','金枝玉叶','星月神话','新不了情','边城','棋王']
    years_90 = ['1998','1999','1994','1994','1996','1990','1991','1995','1990','1999','1997','1996','1991','1996','1999','1994','1999','1993','1984','1997']
    names_00 = ['孔雀','巴尔扎克与小裁缝','车四十四','红颜','茉莉花开','苏州河','青红','和你在一起','开往春天的地铁','爱情呼叫转移','五月之恋','咖啡时光','早熟','盛夏光年','暖','上车走吧','立春','盲山','一个陌生女人的来信','河上的爱情']
    years_00 = ['2005','2002','2001','2005','2004','2000','2005','2002','2002','2007','2004','2003','2005','2006','2003','2000','2007','2007','2004','2008']
    names_10 = ['黄金时代','悲伤逆流成河','万物生长','快把我哥带走','无问西东','老炮儿','七月与安生','芳华','少年班','只有芸知道','你好之华','六弄咖啡馆','半个喜剧','老师好','后来的我们','从你的全世界路过','乘风破浪','缝纫机乐队','热带雨','重返20岁']
    years_10 = ['2014','2018','2015','2018','2018','2015','2016','2017','2015','2019','2018','2016','2019','2019','2018','2016','2017','2017','2019','2015']
    # names = ['缘分']
    move_english_results = {}
    years_key = ["80", "90", "00", "10"]
    names = [names_80, names_90, names_00, names_10]
    years = [years_80, years_90, years_00, years_10]
    for i, year in enumerate(years_key):
        results = {}
        english_result = get_english_names(names[i], years[i], results)
        move_english_results[year] = english_result.values()
    print(move_english_results)

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
Ysot1xdt9qNS
最新推荐 更多