python爬取电影天堂

python

借口

​ 《高清MP4吧》的链接都是磁力链接,要么就是种子,对于python调用迅雷很不友好,于是找到著名的站点《电影天堂》,电影天堂的链接都是FTP格式的而且只能用于迅雷下载,正好符合我用迅雷来下载电影的需求

电影天堂比高清MP4吧多了一个APP,而且APP都是Json格式传输数据的,减少不少的代码量,但是本着学习的态度还是写了两套方案,防止某天接口被封了。抓取页面也用了两种方式,1BeautifulSoup,2正则(写的一手烂正则)能力有限未能破解x-header-request-key 的生成规则

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# -*-coding:gb18030-*-
import requests
import re

from bs4 import BeautifulSoup
#获取电影列表
def get_page(url,movie_list):
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
html = requests.get(url,headers=headers)
try:
html.encoding = 'gb18030'
bsObj = BeautifulSoup(html.text,'lxml')
for i in bsObj.find_all('a',{'class':'ulink'}):
print(i.get_text())
link = html_de_link('https://www.ygdy8.net'+i.attrs['href'])
# print('https://www.ygdy8.net'+i.attrs['href'])
if link:
movie_list.append({i.get_text():link})
except ArithmeticError as e:
return None
#获取电影下载链接
def html_de_link(url):
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
html = requests.get(url,headers=headers)
try:
html.encoding = 'gb18030'
bsObj = BeautifulSoup(html.text,'lxml')
if bsObj.title:
return bsObj.find('td',{'style':'WORD-WRAP: break-word'}).a.attrs['href']
else:
return None
except ArithmeticError as e:
print(e)
#用正则匹配
def html_de_link_regex(url):
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
html = requests.get(url,headers=headers)
try:
html.encoding = 'gb18030'
pattern = re.compile(r'ftp+://[^s]*(avi|rmvb|mp4|mov|flv|wmv|mkv)')
# url = pattern.search(html.text).group(0)
print(pattern.search(html.text).group())
except ArithmeticError as e:
print(e)
# get_page('https://www.ygdy8.net/html/gndy/dyzz/list_23_1.html')
# pattern = re.compile(r'ftp+://[^s]*(avi|mpeg|rmvb|mp4|mov|flv|wmv|mkv)')
# str = ''
# print(pattern.search(str))
# html_de_link('https://www.ygdy8.net/html/gndy/dyzz/20190702/58768.html')
# html_de_link_regex('https://www.ygdy8.net/html/gndy/dyzz/20190702/58768.html')
if __name__ == '__main__':
movie_list=[]
for i in range(1,2):
get_page('https://www.ygdy8.net/html/gndy/dyzz/list_23_'+str(i)+'.html',movie_list)
print(movie_list)

API

电影列表

URL http://m.dydytt.net:8080/adminapi/api/movieList.json?categoryId=9&page=1&searchContent=

  • page - 页面

  • categoryId - 分类

    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      categoryDtoList": [{

      "name": "最新电影"
      }, {
      "id": 10,
      "name": "综合电影"
      }, {
      "id": 1,
      "name": "华语电影"
      }, {
      "id": 2,
      "name": "欧美电影"
      }, {
      "id": 3,
      "name": "日韩电影"
      }, {
      "id": 4,
      "name": "华语电视"
      }, {
      "id": 5,
      "name": "欧美电视"
      }, {
      "id": 6,
      "name": "日韩电视"
      }, {
      "id": 7,
      "name": "综艺"
      }, {
      "id": 8,
      "name": "动漫"
      }]

请求头

1
2
3
4
5
6
7
8
GET /adminapi/api/movieList.json?categoryId=9&page=1&searchContent= HTTP/1.1
x-header-request-timestamp: 1562565140
x-header-request-imei:
x-header-request-key: 68134c60606fa1677e43b080aced00c8
Host: m.dydytt.net:8080
Accept-Encoding: gzip
User-Agent: okhttp/3.8.0
Connection: keep-alive

返回

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
{
"total": 3000,
"rows": [{
"id": 24304,
"categoryId": 9,
"name": "2019年科幻战争《狼之歌》BD中英双字幕",
"publishTime": "2019-07-05"
}, {
"id": 24305,
"categoryId": 9,
"name": "2018年高分获奖《大象席地而坐》BD国语中字",
"publishTime": "2019-07-05"
}, {
"id": 24303,
"categoryId": 9,
"name": "2018年高分获奖《恐怖分子的孩子》BD中英双字幕",
"publishTime": "2019-07-04"
}, {
"id": 24302,
"categoryId": 9,
"name": "2019年剧情音乐《少年追梦情》BD中英双字幕",
"publishTime": "2019-07-04"
}, {
"id": 24288,
"categoryId": 9,
"name": "2019年动作《恶人传》BD韩语中字",
"publishTime": "2019-07-02"
}, {
"id": 24287,
"categoryId": 9,
"name": "2019年剧情传记《最佳敌人》BD中英双字幕",
"publishTime": "2019-07-02"
}, {
"id": 24286,
"categoryId": 9,
"name": "2019年战争剧情《余波/敌人妻》BD中英双字幕",
"publishTime": "2019-07-01"
}, {
"id": 24281,
"categoryId": 9,
"name": "2019年科幻动作《阿丽塔:战斗天使》BD中英双字幕",
"publishTime": "2019-06-30"
}, {
"id": 24279,
"categoryId": 9,
"name": "2019年动作《夏福特/杀戮战警2》BD中英双字幕",
"publishTime": "2019-06-29"
}, {
"id": 24278,
"categoryId": 9,
"name": "2019年喜剧动作《如珠如宝的人生》HD国粤双语中字",
"publishTime": "2019-06-29"
}, {
"id": 24276,
"categoryId": 9,
"name": "2019年悬疑动作《反贪风暴4》BD国粤中英双字",
"publishTime": "2019-06-28"
}, {
"id": 24274,
"categoryId": 9,
"name": "2019年奇幻动作《雷霆沙赞!》BD中英双字幕",
"publishTime": "2019-06-27"
}, {
"id": 24273,
"categoryId": 9,
"name": "2019年剧情《野马》BD中英双字幕",
"publishTime": "2019-06-27"
}, {
"id": 24272,
"categoryId": 9,
"name": "2019年剧情爱情《之后》BD中英双字幕",
"publishTime": "2019-06-27"
}, {
"id": 24268,
"categoryId": 9,
"name": "2019年惊悚恐怖《宠物坟场》BD中英双字幕",
"publishTime": "2019-06-26"
}, {
"id": 24271,
"categoryId": 9,
"name": "2017年动作战争《怒战狂心》BD俄语中字",
"publishTime": "2019-06-26"
}, {
"id": 24267,
"categoryId": 9,
"name": "2019年剧情《蜂鸟计划》BD中英双字幕",
"publishTime": "2019-06-24"
}, {
"id": 22870,
"categoryId": 9,
"name": "2017年剧情爱情《昼颜电影版》BD国日双语中字",
"publishTime": "2019-06-24"
}, {
"id": 24262,
"categoryId": 9,
"name": "2018年悬疑剧情《一个母亲的复仇》BD中字",
"publishTime": "2019-06-22"
}, {
"id": 24261,
"categoryId": 9,
"name": "2018年悬疑剧情《完美的他人》BD韩语中字",
"publishTime": "2019-06-22"
}, {
"id": 24256,
"categoryId": 9,
"name": "2019年惊悚《极端邪恶/极恶人魔》BD中英双字幕",
"publishTime": "2019-06-21"
}, {
"id": 24252,
"categoryId": 9,
"name": "2019年奇幻冒险《小飞象》BD中英双字幕",
"publishTime": "2019-06-20"
}, {
"id": 24246,
"categoryId": 9,
"name": "2019年动作喜剧《谋杀疑云》BD中英双字幕",
"publishTime": "2019-06-17"
}, {
"id": 24238,
"categoryId": 9,
"name": "2018年剧情冒险《米娅和白狮》BD中英双字幕",
"publishTime": "2019-06-16"
}, {
"id": 24237,
"categoryId": 9,
"name": "2019年科幻惊悚《惊天复制》BD中英双字幕",
"publishTime": "2019-06-16"
}, {
"id": 24234,
"categoryId": 9,
"name": "2019年悬疑惊悚《教授与疯子》BD中英双字幕",
"publishTime": "2019-06-15"
}, {
"id": 24233,
"categoryId": 9,
"name": "2018年奇幻喜剧《这个男人来自疯狂世界》BD中英双字幕",
"publishTime": "2019-06-15"
}, {
"id": 24231,
"categoryId": 9,
"name": "2019年悬疑动作《雪暴》HD国语中英双字",
"publishTime": "2019-06-14"
}, {
"id": 24230,
"categoryId": 9,
"name": "2018年获奖剧情《逆流大叔》BD国粤双语中字",
"publishTime": "2019-06-14"
}, {
"id": 24226,
"categoryId": 9,
"name": "2019年高分剧情爱情《五尺天涯》BD中英双字幕",
"publishTime": "2019-06-12"
}]
}

电影信息

URL http://m.dydytt.net:8080/adminapi/api/movieDetail.json?categoryId=9&movieDetailId=24304

  • categoryId - 分类
  • movieDetailId - 电影ID

请求头

1
2
3
4
5
6
7
8
GET /adminapi/api/movieDetail.json?categoryId=9&movieDetailId=24304 HTTP/1.1
x-header-request-timestamp: 1562565148
x-header-request-imei:
x-header-request-key: 476324e92fbd9fe590f36ecabc1ebde7
Host: m.dydytt.net:8080
Accept-Encoding: gzip
User-Agent: okhttp/3.8.0
Connection: keep-alive

返回

1
2
3
4
5
6
7
8
9
10
{
"id": 24304,
"categoryId": 9,
"name": "2019年科幻战争《狼之歌》BD中英双字幕",
"publishTime": "2019-07-05",
"homePicUrl": "https://extraimage.net/images/2019/07/05/3fab8a0e36ef4c074b299dfa2dec60de.jpg",
"content": "◎译  名 狼之歌\r\n◎片  名 Le chant du loup / The Song of the Wolf / The Wolf's Call\r\n◎年  代 2019\r\n◎产  地 法国\r\n◎类  别 战争/灾难/科幻\r\n◎语  言 法语\r\n◎字  幕 中英双字幕\r\n◎上映日期 2019-02-20(法国)\r\n◎IMDb评分 7.2/10 from 2861 users\r\n◎豆瓣评分 7.1/10 from 106 users\r\n◎文件格式 x264 + aac\r\n◎视频尺寸 1280 x 720\r\n◎文件大小 1CD\r\n◎导  演 Antonin Baudry\r\n◎编  剧 Antonin Baudry\r\n◎主  演 弗朗索瓦·西维尔 François Civil\r\n      奥玛·希 Omar Sy\r\n      马修·卡索维茨 Mathieu Kassovitz\r\n      勒达·卡代布 Reda Kateb\r\n      葆拉·贝尔 Paula Beer\r\n\r\n◎标  签 战争 | 法国 | 潜艇 | 法国电影 | 2019 | 电影 | 科幻 | 剧情\r\n\r\n◎简  介 \r\n\r\n  一个年轻人有一种罕见的礼物,可以识别他听到的每一个声音。在一艘法国核潜艇上,一切都依赖于他,金耳朵。\r\n看上去绝对可靠,他犯了一个错误,让船员处于死亡的危险之中。他希望重新获得同志的信任,但他的追求会让他们陷入更加戏剧化的境地。\r\n在核威慑和错误信息的世界中,他们发现自己被困在一个无法控制的装备中。",
"pics": "https://lookimg.com/images/2019/07/05/N79so.jpg",
"downloadUrl": "magnet:?xt=urn:btih:892ca4995b3da5107bcacd4ed3af31e30b6ca04f&dn=%e9%98%b3%e5%85%89%e7%94%b5%e5%bd%b1www.ygdy8.com.%e7%8b%bc%e4%b9%8b%e6%ad%8c.BD.720p.%e4%b8%ad%e8%8b%b1%e5%8f%8c%e5%ad%97%e5%b9%95.mkv&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce&tr=udp%3a%2f%2fexplodie.org%3a6969%2fannounce&tr=udp%3a%2f%2fcarapax.net%3a6969%2fannounce;ftp://ygdy8:ygdy8@yg72.dydytt.net:8370/阳光电影www.ygdy8.com.狼之歌.BD.720p.中英双字幕.mkv;"
}

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2019年动作《恶人传》BD韩语中字
2019年剧情传记《最佳敌人》BD中英双字幕
2019年战争剧情《余波/敌人妻》BD中英双字幕
2019年科幻动作《阿丽塔:战斗天使》BD中英双字幕
2019年动作《夏福特/杀戮战警2》BD中英双字幕
2019年喜剧动作《如珠如宝的人生》HD国粤双语中字
2019年悬疑动作《反贪风暴4》BD国粤中英双字
2019年奇幻动作《雷霆沙赞!》BD中英双字幕
2019年剧情《野马》BD中英双字幕
2019年剧情爱情《之后》BD中英双字幕
2017年动作战争《怒战狂心》BD俄语中字
2019年惊悚恐怖《宠物坟场》BD中英双字幕
2019年剧情《蜂鸟计划》BD中英双字幕
2018年悬疑剧情《一个母亲的复仇》BD中字
2018年悬疑剧情《完美的他人》BD韩语中字
2019年惊悚《极端邪恶/极恶人魔》BD中英双字幕
2019年奇幻冒险《小飞象》BD中英双字幕
2019年动作喜剧《谋杀疑云》BD中英双字幕
2018年剧情冒险《米娅和白狮》BD中英双字幕
2019年科幻惊悚《惊天复制》BD中英双字幕
2019年悬疑惊悚《教授与疯子》BD中英双字幕
2018年奇幻喜剧《这个男人来自疯狂世界》BD中英双字幕
2019年悬疑动作《雪暴》HD国语中英双字
2018年获奖剧情《逆流大叔》BD国粤双语中字
2019年高分剧情爱情《五尺天涯》BD中英双字幕
[['2019年动作《恶人传》BD韩语中字', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:8469/阳光电影www.ygdy8.com.恶人传.BD.720p.韩语中字.mkv'], ['2019年剧情传记《最佳敌人》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:7469/阳光电影www.ygdy8.com.最佳敌人.BD.720p.中英双字幕.mkv'], ['2019年战争剧情《余波/敌人妻》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg90.dydytt.net:8565/阳光电影www.ygdy8.com.余波.BD.720p.中英双字幕.mkv'], ['2019年科幻动作《阿丽塔:战斗天使》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:5053/阳光电影www.ygdy8.com.阿丽塔:战斗天使.BD.720p.中英双字幕.mkv'], ['2019年动作《夏福特/杀戮战警2》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:8467/阳光电影www.ygdy8.com.夏福特.BD.720p.中英双字幕.mkv'], ['2019年喜剧动作《如珠如宝的人生》HD国粤双语中字', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:7467/阳光电影www.ygdy8.com.如珠如宝的人生.HD.720p.国粤双语中字.mkv'], ['2019年悬疑动作《反贪风暴4》BD国粤中英双字', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:6172/阳光电影www.ygdy8.com.反贪风暴4.BD.720p.国粤双语中字.mkv'], ['2019年奇幻动作《雷霆沙赞!》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:8466/阳光电影www.ygdy8.com.雷霆沙赞!.BD.720p.中英双字幕.mkv'], ['2019年剧情《野马》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:7466/阳光电影www.ygdy8.com.野马.BD.720p.中英双字幕.mkv'], ['2019年剧情爱情《之后》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg90.dydytt.net:8561/阳光电影www.ygdy8.com.之后.BD.720p.中英双字幕.mkv'], ['2017年动作战争《怒战狂心》BD俄语中字', 'ftp://ygdy8:ygdy8@yg90.dydytt.net:8560/阳光电影www.ygdy8.com.怒战狂心.BD.720p.俄语中字.mkv'], ['2019年惊悚恐怖《宠物坟场》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:3217/阳光电影www.ygdy8.com.宠物坟场.BD.720p.中英双字幕.mkv'], ['2019年剧情《蜂鸟计划》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:4201/阳光电影www.ygdy8.com.蜂鸟计划.BD.720p.中英双字幕.mkv'], ['2018年悬疑剧情《一个母亲的复仇》BD中字', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:8464/阳光电影www.ygdy8.com.一个母亲的复仇.BD.720p.印地语中字.mkv'], ['2018年悬疑剧情《完美的他人》BD韩语中字', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:7464/阳光电影www.ygdy8.com.完美的他人.BD.720p.韩语中字.mkv'], ['2019年惊悚《极端邪恶/极恶人魔》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:8463/阳光电影www.ygdy8.com.极端邪恶.BD.720p.中英双字幕.mkv'], ['2019年奇幻冒险《小飞象》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:8462/阳光电影www.ygdy8.com.小飞象.BD.720p.中英双字幕.mkv'], ['2019年动作喜剧《谋杀疑云》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg72.dydytt.net:8367/阳光电影www.ygdy8.com.谋杀疑云.BD.720p.中英双字幕.mkv'], ['2018年剧情冒险《米娅和白狮》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg90.dydytt.net:8556/阳光电影www.ygdy8.com.米娅和白狮.BD.720p.中英双字幕.mkv'], ['2019年科幻惊悚《惊天复制》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:8460/阳光电影www.ygdy8.com.惊天复制.BD.720p.中英双字幕.mkv'], ['2019年悬疑惊悚《教授与疯子》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:8459/阳光电影www.ygdy8.com.教授与疯子.BD.720p.中英双字幕.mkv'], ['2018年奇幻喜剧《这个男人来自疯狂世界》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg90.dydytt.net:8555/阳光电影www.ygdy8.com.这个男人来自疯狂世界.BD.720p.中英双字幕.mkv'], ['2019年悬疑动作《雪暴》HD国语中英双字', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:4135/阳光电影www.ygdy8.com.雪暴.HD.720p.国语中英双字.mkv'], ['2018年获奖剧情《逆流大叔》BD国粤双语中字', 'ftp://ygdy8:ygdy8@yg90.dydytt.net:8554/阳光电影www.ygdy8.com.逆流大叔.BD.720p.国粤双语中字.mkv'], ['2019年高分剧情爱情《五尺天涯》BD中英双字幕', 'ftp://ygdy8:ygdy8@yg45.dydytt.net:3215/阳光电影www.ygdy8.com.五尺天涯.BD.720p.中英双字幕.mkv']]

问题

  1. urlopen在获取页面的时候发现只能获取部分的html源码,暂不知是什么问题,换成requests解决问题
  2. 乱码,用了requests后发现乱码,用requests.encoding指定编码解决问题
  3. 正则本地测试没有问题,网页获取后就变成这样,暂时不会解(正则没有写好的原因)
    1. ftp://ygdy8:ygdy8@yg45.dydytt.net:8469/阳光电影www.ygdy8.com.恶人传.BD.720p.韩语中字.mkv">ftp://ygdy8:ygdy8@yg45.dydytt.net:8469/阳光电影www.ygdy8.com.恶人传.BD.720p.韩语中字.mkv

参考

快速上手 — Requests 2.18.1 文档