吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13309|回复: 60
收起左侧

[Python 原创] python获取电影天堂各版块电影

  [复制链接]
null119 发表于 2018-12-17 23:13
本帖最后由 null119 于 2018-12-18 08:44 编辑

版本:
Python3.6.5
引用库:
re,requests,json,lxml

运行效果:
QQ图片20181217231023.png

代码:
[Python] 纯文本查看 复制代码
#-*-coding:UTF-8-*-
import re
import requests
import json
from lxml import etree

weburl =r"http://www.ygdy8.net"

def getpage(url):   #获取电影列表页面数
    t= requests.get(url)
    t.encoding='gbk'
    t=''.join(re.findall("/(\d+)条",t.text))
    sum=int(t) // 25
    if int(t) % 25 != 0:
        sum+=1
    return sum

def getlist(url):   #获取电影列表页各个电影URL
    t=requests.get(url)
    t.encoding='gbk'
    #html = etree.HTML(t.text)
    #murl = html.xpath('//*[@class="ulink"]/@href')
    murl = re.findall('(/html/.*?/.*?/\d+/\d+.html)" class="ulink"',t.text)
    #mname= html.xpath('//*[@class="ulink"]/text()')
    return murl

def getdownurl(url):    #获取电影页下载地址
    t = requests.get(url)
    t.encoding = 'gbk'
    if len(re.findall('fdfddf"><a href="(.*?)"',t.text))>0 :
        ftpurl= re.findall('fdfddf"><a href="(.*?)"',t.text)[0]
        return ftpurl
    else:
        return ''

def getdbdata(moivename):   #获取豆瓣评分
    dburl =r"http://api.douban.com/v2/movie/search?q="+moivename
    txt=requests.get(dburl)
    l=json.loads(txt.text)
    #dbid=l["subjects"][0]["id"]
    #dbweburl=l["subjects"][0]["alt"]
    if 'code' in l.keys():
        return -1
    else:
        dbpf=l["subjects"][0]["rating"]["average"]
        return dbpf

def getgf(url): #获取高评分电影
    for i in range(1,5):
        if i==1:
            t = requests.get(url+'.html')
        else:
            t = requests.get(url +'_'+ str(i) + '.html')
        t.encoding = 'gbk'
        tmp=re.findall('href="(http://www\.ygdy8\..*?/html/gndy/.*?/\d+/\d+\.html)',t.text)
        for j in tmp:
            durl=getdownurl(j)
            if durl != '':
                name = ''.join(durl).split('.')
                moivename = (name[5] + '[' + name[6] + name[7] + ']')
                dbpf = getdbdata(name[5])
                if dbpf == -1:
                    print(moivename,'下载地址:'+ durl)
                else:
                    if dbpf > 7.9:
                        print(moivename,'豆瓣评分:'+ str(dbpf),'下载地址:'+ durl)

def getmoive(id,page):  #获取指定版块指定页数的电影下载地址
    if id < 3:
        pagenum=getpage(url[id]+'1.html')
        if pagenum < page:
            page=pagenum
        for i in range(1,page+1):
            tmpurl=getlist(url[id]+str(i)+'.html')
            k=0
            for j in tmpurl:
                downurl=getdownurl(weburl+j)
                name=''.join(downurl).split('.')
                moivename=(name[5]+'['+name[6]+name[7]+']')
                dbpf=getdbdata(name[5])
                if dbpf == -1:
                    print(moivename,'下载地址:'+ downurl)
                else:
                    print(moivename,'豆瓣评分:'+str(dbpf),'下载地址:'+downurl)
                k+=1
    else:
        getgf(url[3])

#几个电影版块的URL
url = [                                                         #分类名称   id
    'http://www.ygdy8.net/html/gndy/dyzz/list_23_',     #最新电影   0
    'http://www.ygdy8.net/html/gndy/china/list_4_',     #国内电影   1
    'http://www.ygdy8.net/html/gndy/oumei/list_7_',     #欧美电影   2
    'http://www.ygdy8.net/html/gndy/jddy/20160320/50510'#高分经典  3
]

if __name__=='__main__':
    getmoive(0,3)   #getmoive(分类ID,获取页数)     ps:每页是25部电影


下面是豆瓣评分查询无限制时的获取结果:
QQ截图20181218084350.png
注:代码默认是获取所有电影的豆瓣评分的,但豆瓣评分的查询API有时间限制,我在代码里没有加时间间隔,有需要的自己加一下,再就是如果有更懒的人,就直接用下面的这个吧,简单粗暴。


11111111111.png

GetMoive1.6.1.zip (1.01 MB, 下载次数: 802)


免费评分

参与人数 16吾爱币 +16 热心值 +15 收起 理由
harbinlixu + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
shiyouiy + 1 + 1 谢谢@Thanks!
lucky_sword + 1 + 1 我很赞同!
zhushaobao + 1 谢谢@Thanks!
zhao1125 + 1 + 1 用心讨论,共获提升!
天才豪仔 + 1 + 1 谢谢@Thanks!
wontbackdown + 1 + 1 谢谢@Thanks!
吾爱妹子涛 + 1 + 1 谢谢楼主的分享
wushaominkk + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
GSQ1993081412 + 1 + 1 谢谢@Thanks!
故巷笑别R + 1 谢谢@Thanks!
Rebellion + 1 + 1 我很赞同!
爱问解 + 1 + 1 热心回复!
Acloor + 1 + 1 热心回复!
Alone记忆 + 1 谢谢@Thanks!
lglgwow + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| null119 发表于 2018-12-18 08:33
gunxsword 发表于 2018-12-18 00:08
问一下楼主,这个getmovie的,也是楼主用PYTHON做出来的吗?

不是的,后面的GetMoive是delphi写的
 楼主| null119 发表于 2019-1-8 16:32
神棍黄小坏 发表于 2019-1-8 15:09
楼主软件提示要更新,然后就打不开了怎么办?

软件版本数据被网站回档了,现已修复
sp21000 发表于 2018-12-17 23:25 来自手机
Alone记忆 发表于 2018-12-17 23:39
学习学习。
29733402 发表于 2018-12-17 23:40 来自手机
感谢分享
gunxsword 发表于 2018-12-18 00:04
感谢分享,最近正在学PYTHON,这是超好的学习代码!
gunxsword 发表于 2018-12-18 00:08
问一下楼主,这个getmovie的,也是楼主用PYTHON做出来的吗?

点评

不是的,后面的GetMoive是delphi写的  详情 回复 发表于 2018-12-18 08:33
头像被屏蔽
lf1314 发表于 2018-12-18 00:44
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
pjchangew 发表于 2018-12-18 01:17
提示: 作者被禁止或删除 内容自动屏蔽
成国大吉大利 发表于 2018-12-18 01:51
这个可以学习一下不错的文章
mzhsohu 发表于 2018-12-18 02:16
感谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表