Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法


Posted in Python onAugust 26, 2019

本文实例讲述了Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法。分享给大家供大家参考,具体如下:

做个笔记
(python 3.6,django 2.0)

def get_url(outer_order_id):
  refundId = get_refundId(outer_order_id)
  host_url = 'http://test.shequ.com/order/agreeRefund?'
  reason_list = ['商品已售完','重复订单','没有骑手接单','联系不上顾客','顾客需要重新下单']
  reason = random.choice(reason_list)
  api_data = {
    'reason':reason,
    'refundId':refundId,
    'sendType':0
  }
  url = host_url + parse.urlencode(api_data)
  return url
print(get_url('3086123456'))
http://test.shequ.com/order/agreeRefund?reason=%E9%87%8D%E5%A4%8D%E8%AE%A2%E5%8D%95&refundId=1170611&sendType=0
# -*- coding: utf-8 -*-
import urllib
from bs4 import BeautifulSoup
import re
#访问url,返回html页面
def get_html(url):
  req = urllib.request.Request(url)
  req.add_header('User-Agent','Mozilla/5.0')
  response = urllib.request.urlopen(url)
  html = response.read()
  return html
def get_movie_url(movie_name):#根据电影名称,生成搜索结果的URL
  host_url = 'http://s.dydytt.net/plus/search.php?kwtype=0&keyword='
  movie_sign = urllib.parse.quote(movie_name.encode('GBK'))
  search_url = host_url + movie_sign
  return search_url
#从搜索结果页面,提取电影的详情页面链接,存入列表返回
def get_movie_list(url):
  m_list = []
  html = get_html(url)
  soup = BeautifulSoup(html,'html.parser')
  fixed_html = soup.prettify()
  a_urls = soup.find_all('a')
  host = "http://www.ygdy8.com"
  for a_url in a_urls:
    m_url = a_url.get('href')
    m_url = str(m_url)
    if re.search(r'\d{8}',m_url) and (host not in m_url):
      m_list.append(host + m_url)
  return m_list
#从电影详情页面中获取电影标题
def get_movie_title(html):
  soup=BeautifulSoup(html,'html.parser')
  fixed_html=soup.prettify()
  title=soup.find('h1')
  title=title.string
  return title
#从电影详情页面中获取此页面所有的的下载链接
def get_movie_download_url(html):
  soup = BeautifulSoup(html,'html.parser')
  fixed_html = soup.prettify()
  td = soup.find_all('td',attrs={'style':'WORD-WRAP: break-word'})
  down_urls = []
  for t in td:
    down_urls.append(t.a.get('href'))
  return down_urls
#传入电影列表,获取每个电影的下载地址
def get_movie(movie_list):
  movie_dict = {}
  for i in range(0,len(movie_list)):
    html = get_html(movie_list[i])
    html = html.decode('GBK','ignore') #忽略编码错误
    m_title = get_movie_title(html)
    if u'游戏' not in m_title: #过滤游戏
      if u'动画' not in m_title: #过滤动画片
        m_url_list = get_movie_download_url(html)
        for m_url in m_url_list:
          movie_dict[m_url] = m_title
  return movie_dict

用django展现在页面效果如下:

Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法

另一个网站的

# -*- coding: utf-8 -*-
from xpinyin import Pinyin
from bs4 import BeautifulSoup
from urllib import request,error
import time,re
import ssl
ssl._create_default_https_context = ssl._create_unverified_context #关闭https协议验证证书
def get_html(url): #访问url,返回html页面,如果url错误,则返回状态码,一般是404
  req = request.Request(url)
  req.add_header('User-Agent','Mozilla/5.0')
  try:
    response = request.urlopen(url)
    html = response.read()
    return html
  except error.HTTPError as e:
    return e.code
def get_m_html(movie_name):#根据电影名称,返回正确的电影html
  pin = Pinyin()
  pinyin_movie_name = pin.get_pinyin(movie_name,"")#不使用分隔符,默认是-
  movie_type = {
    "Sciencefiction":"科幻片",
    "Horror"    :"恐怖片",
    "Drama"     :"剧情片",
    "Action"    :"动作片",
    "Comedy"    :"喜剧片",
    "Love"     :"爱情片",
    "War"      :"战争片"
  }
  host = "https://www.kankanwu.com"
  for k,v in movie_type.items():
    movie_url = host + "/" + k + "/" + pinyin_movie_name + "/"
    html = get_html(movie_url)
    if isinstance(html,int):
      time.sleep(10)
    else:
      return html
def get_dload_url(html): #从电影html页面中获取下载地址
  movie_dict = {}
  soup = BeautifulSoup(html,'lxml')
  fixed_html = soup.prettify()
  a_urls = soup.find_all(href=re.compile("thunder"))#找到含有thunder链接的href
  for url in a_urls:
    m_title = url.get('title')
    m_url = url.get('href')
    movie_dict[m_title] = m_url
  return movie_dict

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
May 05 Python
Python os模块介绍
Nov 30 Python
python中解析json格式文件的方法示例
May 03 Python
python select.select模块通信全过程解析
Sep 20 Python
Python实现读取json文件到excel表
Nov 18 Python
Python检测网络延迟的代码
May 15 Python
python实现京东秒杀功能
Jul 30 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
Python flask框架实现查询数据库并显示数据
Jun 04 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 Python
python数据库批量插入数据的实现(executemany的使用)
Apr 30 Python
Golang GBK转UTF-8的例子
Aug 26 #Python
利用python实现周期财务统计可视化
Aug 25 #Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 #Python
numpy求平均值的维度设定的例子
Aug 24 #Python
Python实现滑动平均(Moving Average)的例子
Aug 24 #Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 #Python
在Python3 numpy中mean和average的区别详解
Aug 24 #Python
You might like
php获取远程文件内容的函数
2015/11/02 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
学习面向对象之面向对象的术语
2010/11/30 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
python和shell获取文本内容的方法
2018/06/05 Python
详解Python 函数如何重载?
2019/04/23 Python
python字典一键多值实例代码分享
2019/06/14 Python
QML用PathView实现轮播图
2020/06/03 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
温泉秘密:Onsen Secret
2020/07/06 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
集体婚礼证婚词
2014/01/13 职场文书
抽样调查项目计划书
2014/04/24 职场文书
公司承诺书怎么写
2014/05/24 职场文书
员工团队活动方案
2014/08/28 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
碧霞祠导游词
2015/02/09 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript