首页 > 编程语言 >python+selenium实现在某瓣上自动批量获取中文电影的英文名称

python+selenium实现在某瓣上自动批量获取中文电影的英文名称

时间:2023-03-26 22:01:14浏览次数:42  
标签:webdriver 中文 python 电影 selenium 某瓣 import

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

  二、实现思路 通过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)

标签:webdriver,中文,python,电影,selenium,某瓣,import
From: https://blog.51cto.com/u_14260790/6150894

相关文章

  • python3实现阿里云短信发送功能
    #-*-coding:utf-8-*-importuuidimportsysimportjsonimportuuidfromaliyunsdkcore.clientimportAcsClientfromaliyunsdkcore.profileimportregion_pr......
  • Python实例讲解 -- 操作数据库 附mysqldb win32 py2.7下载
    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法。python操作数据库需要安装一个第三方的模块,在http://mysq......
  • Python实例讲解 -- 解析xml
    doc.xml <?xmlversion="1.0"encoding="utf-8"?><info><intro>信息</intro><listid='001'><head>auto_userone</head><name>Jordy</name>......
  • Python字符串的encode与decode
    首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成......
  • Python 列表 list 数组 array
    Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构。 创建列表 sample_list=['a',1,('a','b')]Python列表操作 sample_list=['a','b',0,1,3]得到......
  • Python实例讲解 -- 定时播放 (闹钟+音乐)
    自己写的闹钟,只可以播放wav格式的音频。 importtimeimportsyssoundFile='sound.wav'not_executed=1defsoundStart():ifsys.platform[:5]=='linux':......
  • Python实例讲解 -- 图片处理
    虽然图像处理的最佳工具是MATLAB的图像处理工具箱,但是在进行一些“简单的”图像处理任务或者大批量的简单图像处理任务的时候,Python图像处理的方法更有优势。 1.引言: ......
  • Python实例讲解 -- 磁盘文件的操作
    在文件夹里有六十多个RM格式的视频文件,我现在需要把它们的文件名都提取出来,并去掉文件的扩展名,以便放到需要的网页里。 应该有什么软件可以完成这个简单的要求,可是一时间到......
  • 初学Python,版本如何选择?
     早在四年多以前,在我进入英才网之前,去面试过一家海归创业的公司。他们需要的是有unix开发经验的技术人员,但是因为他们当时所处的阶段对很多成熟技术人员不是很吸引,所......
  • python_数据分析与挖掘实战_洗浴事件
    importpandasaspdimportmatplotlib.pyplotaspltinputfile='./data/original_data.xls'#'./demo/data/original_data.xls'#输入的数据文件data=pd.read_e......