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之yield表达式学习
Sep 02 Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 Python
python简单文本处理的方法
Jul 10 Python
Python利用ansible分发处理任务
Aug 04 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
Python hmac模块使用实例解析
Dec 24 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 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中上传大体积文件时需要的设置
2006/10/09 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
React组件refs的使用详解
2018/02/09 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
Python中字典和JSON互转操作实例
2015/01/19 Python
python字典排序实例详解
2015/05/20 Python
Python绘制七段数码管实例代码
2017/12/20 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
python hough变换检测直线的实现方法
2019/07/12 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
python 5个实用的技巧
2020/09/27 Python
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
几道PHP的面试题
2012/05/19 面试题
车贷收入证明范本
2014/01/09 职场文书
房地产财务管理制度
2014/02/02 职场文书
学校四群教育实施方案
2014/06/12 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server
golang elasticsearch Client的使用详解
2021/05/05 Golang
python内置模块之上下文管理contextlib
2022/06/14 Python