IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 为了追求女神,我利用python下载了她看过的所有电影 -> 正文阅读

[Python知识库]为了追求女神,我利用python下载了她看过的所有电影

这些天工作室来了几位女生,想起在误杀中主人公曾说过“当你看过一千部以上的电影后,什么事情都不再离奇”,为了解他们我决定从此方面入手,通过电影来分析他们的性格。
首先,我通过一些手段找到了他的豆瓣账号(别问是怎么找到的。。。。。)
在这里插入图片描述
大致浏览一下发现她比较喜欢悬疑和恐怖类型的电影(共同话题有了),接下来我们通过python爬取这些电影名称,这里有观察到页面链接存在一个start的参数,有名字显然可知该参数用来控制页面,每个页面步长15.于是可写出如下代码

import requests
from lxml import etree
import re
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50'
}
for i in range(0,210,15):
    god_url='https://movie.douban.com/people/******/collect?start=%d&sort=time&rating=all&filter=all&mode=grid'
    movie_list=requests.get(url=format(my_url%i),headers=headers).text
    movie_list_tree=etree.HTML(movie_list)
    movie_name_list=movie_list_tree.xpath('//*[@id="content"]/div[2]/div[1]/div[2]/div')`
	for j in movie_name_list:
        movie_name=j.xpath('./div[2]/ul/li[1]/a/em/text()')[0]
        movie_name=movie_name.split(' ',1)[0] if(movie_name.find('/')) else movie_name
        print(movie_name)   

处理后的电影名称
这里我对看过的电影名做了一些处理,这是应为正常获取的电影名称部分会存在中英文混写的情况,这样并不有利于我进行下一步的电影搜索,所以在此我采用了将判断电影名是否含有‘/’的方法来进行分割(处理前的图片如下)。
在这里插入图片描述
然后,我通过第三方搜索引擎对这些片名进行了查找(这里我才用的是BT电影天堂)
代码如下

mange_index_url='https://www.jsr9.com/?s='+movie_name
mange_html=requests.get(url=mange_index_url,headers=headers).text
      try:
            mange_list_tree=etree.HTML(mange_html)
            mange_second_url=mange_list_tree.xpath('/html/body/div[2]/div[1]/div[2]/div[1]/p[1]/a/@href')[0]
            print(mange_second_url)     
        except Exception as e:
            falid_movie_name.append(movie_name)
        mange_text=requests.get(url=mange_second_url,headers=headers).text
        mange_end_html=etree.HTML(mange_text)
        if len(mange_end_html.xpath('/html/body/div[2]/div[1]/div[2]/div[3]/div')) >1:
            for x in mange_end_html.xpath('/html/body/div[2]/div[1]/div[2]/div[3]/div'):
                movie_radio=x.xpath('./a/p/text()[1]')[0]
                if movie_radio.find('1080p'):
                    mange_url=x.xpath('./ul/li[2]/span/a/@href')[0]
                    movie_name_url=x.xpath('./ul/li[3]/span/text()')[0].split(' ',1)[0]
                    print(movie_radio)
                    print(mange_url)
                    break
        mange_url=mange_end_html.xpath('/html/body/div[2]/div[1]/div[2]/div[3]/div[1]/a/@href')[0] if(mange_url!='') else mange_url
        
        movie_name_url=mange_end_html.xpath('/html/body/div[2]/div[1]/div[2]/div[3]/div[1]/ul/li[3]/span/text()')[0].split(' ',1)[0] if(movie_name_url!='') else movie_name_url

这里,部分电影名称在不同网站会存在一些差异,所以,我在这边建立一个faild_movie_name用来存储这些失败的电影名单,方便后续处理。然后,由于这次目的是为了追寻我的女神,所以,视频质量一定不能马虎,所以,在获取资源的同时,我还加入了优先获取1080p的电影资源文件。

最后也是最为重要的一部分,那就是将获取的磁力链接下载,这里,我查了许多资料,最后我使用了调用迅雷来下载电影的方案,但这边也存在一个问题,按照网络现有的资源,迅雷9,10是可以通过调整,下载设置来解决频繁的新建任务面板,而我目前电脑上安装的迅雷11,尽管也存在这方面的设置,但是调整过后,却没有任何效果,所以我这里采用了一个十分笨拙的方案,那就是直接模拟鼠标点击事件。
具体代码如下:

thunder = Dispatch('ThunderAgent.Agent64.1')
thunder.AddTask(mange_url, movie_name_url, r"H:\电影")
thunder.CommitTasks()
time.sleep(5)
pyautogui.click(x=846, y=867)
print("任务已建立,开始下载:{}....".format(movie_name))
time.sleep(3)

有必要说明的是这里的注册名,也就是

thunder = Dispatch(‘ThunderAgent.Agent64.1’)

这里的获取需要通过注册表搜寻得到,在注册表中搜索thunder,即可查到相关信息
在这里插入图片描述
然后,这里,我给每一次调用迅雷和模拟点击之间都加入了延迟,因为此次写的比较简单,没有采用一些异步框架,为了防止冲突,所以采用了该解决方案(其实就是懒。。。。。。)

最后,就是关于点击事件的x,y坐标,这个我实际上也是采用的pyautogui中的事件来获取的,首现,打开新建任务面板,然后通过调用

print(pyautogui.position())

来获取相关参数。
这样我们只需等待一杯茶的时间,就能尽想成果了~~~~

其效果如下:
在这里插入图片描述
本次所用到的库

request
lxml
pyautogui
time

完整代码

import requests
from lxml import etree
import re
from win32com.client import Dispatch
import time
from win32 import win32gui
import pyautogui
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50'
}
thunder = Dispatch('ThunderAgent.Agent64.1')
falid_movie_name=[]
mange_url=''
movie_name_url=''
# time.sleep(5)
# print(pyautogui.position())
for i in range(0,210,15):
    my_url='https://movie.douban.com/people/****/collect?start=%d&sort=time&rating=all&filter=all&mode=grid'
    movie_list=requests.get(url=format(my_url%i),headers=headers).text
    movie_list_tree=etree.HTML(movie_list)
    movie_name_list=movie_list_tree.xpath('//*[@id="content"]/div[2]/div[1]/div[2]/div')
    for j in movie_name_list:
        movie_name=j.xpath('./div[2]/ul/li[1]/a/em/text()')[0]
        movie_name=movie_name.split(' ',1)[0] if(movie_name.find('/')) else movie_name
        print(movie_name)
        mange_index_url='https://www.jsr9.com/?s='+movie_name
        mange_html=requests.get(url=mange_index_url,headers=headers).text
        try:
            mange_list_tree=etree.HTML(mange_html)
            mange_second_url=mange_list_tree.xpath('/html/body/div[2]/div[1]/div[2]/div[1]/p[1]/a/@href')[0]
            print(mange_second_url)     
        except Exception as e:
            falid_movie_name.append(movie_name)
        mange_text=requests.get(url=mange_second_url,headers=headers).text
        mange_end_html=etree.HTML(mange_text)
        if len(mange_end_html.xpath('/html/body/div[2]/div[1]/div[2]/div[3]/div')) >1:
            for x in mange_end_html.xpath('/html/body/div[2]/div[1]/div[2]/div[3]/div'):
                movie_radio=x.xpath('./a/p/text()[1]')[0]
                if movie_radio.find('1080p'):
                    mange_url=x.xpath('./ul/li[2]/span/a/@href')[0]
                    movie_name_url=x.xpath('./ul/li[3]/span/text()')[0].split(' ',1)[0]
                    print(movie_radio)
                    print(mange_url)
                    break
        mange_url=mange_end_html.xpath('/html/body/div[2]/div[1]/div[2]/div[3]/div[1]/a/@href')[0] if(mange_url!='') else mange_url
        
        movie_name_url=mange_end_html.xpath('/html/body/div[2]/div[1]/div[2]/div[3]/div[1]/ul/li[3]/span/text()')[0].split(' ',1)[0] if(movie_name_url!='') else movie_name_url
        thunder.AddTask(mange_url, movie_name_url, r"H:\电影")
        thunder.CommitTasks()
        time.sleep(5)
        pyautogui.click(x=846, y=867)
        print("任务已建立,开始下载:{}....".format(movie_name))
        time.sleep(3)
        

print('失败的电影有'+str(falid_movie_name))    


  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:11:29  更:2021-10-06 12:13:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 21:57:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计