首页 技术 正文
技术 2022年11月8日
0 收藏 421 点赞 1,323 浏览 4394 个字

V1.0

功能:从比较知名的几个电影下载网站爬取下载链接,并自动打印出来:

代码:

# -*- coding: utf8 -*-
from bs4 import BeautifulSoup
import requests, lxml
from urllib.parse import quote
import redef get_name():
while 1:
moviename = input('请输入要查找的电影名\n->')
moviename_quote = quote(moviename.encode('gb2312'))
get_url_from_ygdy(moviename_quote)
get_url_from_bttiantang(moviename)
get_url_from_dytt(moviename_quote)def get_url_from_ygdy(moviename):
baseurl = 'http://s.dydytt.net/plus/search.php?kwtype=0&keyword='
url = baseurl + str(moviename)
content = BeautifulSoup(requests.get(url).content.decode('gb2312', 'ignore'), 'lxml')
first_page = content.find_all('td', width="")
movie_infos = content.find_all('td', width="55%")
if movie_infos.__len__() == 0:
print('查无此电影,请检查后重试')
return
else:
print('阳光电影搜索结果:')
if first_page.__len__() == 0:
for movie_info in movie_infos:
get_info(movie_info, moviename)
else:
last_page_url = first_page[1].find('a').get('href') + '"'
pattern = re.compile('PageNo=(.*?)"')
pnt = re.findall(pattern, last_page_url)
for i in range(int(pnt[0])):
print('第', i + 1, '页:')
page_url = url + '&PageNo=' + str(i + 1)
pagecontent = BeautifulSoup(requests.get(page_url).content.decode('gb2312', 'ignore'), 'lxml')
movie_infos = pagecontent.find_all('td', width='55%')
for movie_info in movie_infos:
get_info(movie_info, moviename)def get_info(movie_info, name):
movie_url = movie_info.find('a').get('href')
moviename = movie_info.text
if '游戏' not in name and '游戏' in moviename:
return
else:
print('电影名:', moviename)
url = 'http://www.ygdy8.com' + movie_url
info = BeautifulSoup(requests.get(url).content.decode('gbk', 'ignore'), 'lxml')
download = info.find_all('td', style="WORD-WRAP: break-word")
print('下载链接:')
if download.__len__() == 1:
print(download[0].find('a').string)
else:
for each in range(download.__len__()):
print('链接', each + 1, ':', download[each].find('a').string)
print('\n')def get_url_from_bttiantang(moviename):
baseurl = 'http://www.bttiantang.com/s.php?q=' + str(moviename)
page_content = requests.get(baseurl).content.decode('utf8', 'ignore')
pattern = re.compile('</b>条<b>(.*?)</b>')
pagenum_info = re.findall(pattern, page_content)
page_content = BeautifulSoup(page_content, 'lxml')
content = page_content.find_all('p', class_="tt cl")
if content.__len__() == 0:
print('查无此电影,请检查后重试')
return
else:
print('BT天堂搜索结果:')
if pagenum_info.__len__() == 0:
for each in content:
get_movieinfo(each, moviename)
else:
for i in range(int(pagenum_info[0])):
print('第', i + 1, '页:')
page_url = baseurl + '&PageNo=' + str(i + 1)
page_content = BeautifulSoup(requests.get(page_url).content.decode('utf8', 'ignore'), 'lxml')
content = page_content.find_all('p', class_="tt cl")
for each in content:
get_movieinfo(each, moviename)def get_movieinfo(movie_content, name):
url = 'http://www.bttiantang.com/' + movie_content.find('a').get('href')
moviename = movie_content.text
if '游戏' not in name and '游戏' in moviename:
return
print('电影名:', moviename)
info = BeautifulSoup(requests.get(url).content.decode('utf8', 'ignore'), 'lxml')
links = info.find_all('div', class_='tinfo')
print('下载链接:')
i = 0
for each in links:
i += 1
print('链接' + str(i) + ':')
print('http://www.bttiantang.com' + each.find('a').get('href'))def get_url_from_dytt(moviename):
baseurl = 'http://www.dytt.com/search.asp?searchword=' + str(moviename)
content = requests.get(baseurl).content.decode('gbk', 'ignore')
pattern = re.compile('下一页.*?href.*?page=(.*?)&')
result = re.findall(pattern, content)
content = BeautifulSoup(content, 'lxml')
items = content.find_all('p', class_='s1')
if items.__len__() == 1:
print('查无此电影,请检查后重试')
return
else:
print('电影淘淘搜索结果:')
if result.__len__() == 0:
for i in range(items.__len__() - 1):
get_movieinfo_from_dytt(items[i + 1], moviename)
else:
for i in range(int(result[0])):
print('第', i + 1, '页:')
url = baseurl + '&page=' + str(i + 1)
page_content = BeautifulSoup(requests.get(url).content.decode('gbk', 'ignore'), 'lxml')
items = page_content.find_all('p', class_='s1')
for i in range(items.__len__() - 1):
get_movieinfo_from_dytt(items[i + 1], moviename)def get_movieinfo_from_dytt(item, name):
moviename = item.find('a').text
movieurl = 'http://www.dytt.com' + item.find('a').get('href')
if '游戏' not in name and '游戏' in moviename:
return
print('电影名:', moviename)
pagecontent = requests.get(movieurl).content.decode('gbk', 'ignore')
links = re.findall(re.compile('ed2k:(.*?)\|/'), pagecontent)
i = 0
print('下载链接:')
if links.__len__() != 0:
for link in links:
i += 1
print('链接' + str(i) + ':', 'ed2k://|file|' + link + '|/')
else:
links = re.findall(re.compile('http:(.*?)torrent'), pagecontent)
if links.__len__() != 0:
for link in links:
i += 1
print('链接' + str(i) + ':', 'http:' + link + 'torrent')
else:
links = re.findall(re.compile('ftp:(.*?)mkv'), pagecontent)
for link in links:
i += 1
print('链接' + str(i) + ':', 'ftp:' + link + 'mkv')if __name__ == '__main__':
get_name()

运行结果:python 电影下载链接爬虫

上一篇: canvas实现绘画
下一篇: NSException
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,077
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,401
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,813
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,896