用到的python第三方库:bs4、requests、execjs(在python中调用js脚本)

目标网站: www.beiwo.tv

通过分析网页源码发现,网页通过调用一个加密JS脚本来加密网页源码中的一段字符串从而获得迅雷电影链接,将分析网页得到的JS加密源码存放到encode.js文件中,通过exejs库在python中调用并传递我们抓取到的待加密的字符串从而获得想要得到的电影迅雷下载链接。

抓包可以分析出网页搜索所发送的表单,构造data表单,向网页发送请求获得搜索网页url,然后按照上面所说解析网页获得待加密字符串。

源码如下:

 1 #ThunderUrl.py
 2 import execjs
 3 def echoDown(str):
 4     #获得未编码的迅雷链接
 5     gurl = []
 6     s = str.split("###")
 7     for i in range(0,len(s)-1):
 8         gurl = s[i].split("$")
 9     return gurl[1]
10
11 def getJs():
12     #生成JS脚本对象
13     f = open("encode.js", 'r')
14     line = f.readline()
15     htmlstr = ''
16     while line:
17         htmlstr = htmlstr + line
18         line = f.readline()
19     return htmlstr
20
21 """
22 将str编码成可用的迅雷链接
23 """
24 def getThunderUrl(str):
25     t_url = echoDown(str)
26     jsstr = getJs()
27     ctx = execjs.compile(jsstr)
28     ThunderUrl = ctx.call('ThunderEncode',t_url)
29     print(ThunderUrl)

 1 #MovieSearch.py
 2 import requests
 3 from bs4 import BeautifulSoup
 4 import re
 5
 6 def MovieSeach(movieName):
 7 #根据movideName 从url中请求搜索结果 并将结果url存放到集合movieUrlSet中
 8     name = movieName
 9     data = {'typeid': '2', 'wd': name}
10     url = 'http://www.beiwo.tv/index.php?s=vod-search'
11     headers = {
12         'Cache-Control': 'max-age=0',
13         'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
14         'Accept-Encoding': 'gzip, deflate',
15         'Accept-Language': 'zh-CN,zh;q=0.8',
16         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
17     }
18     response = requests.post(url, data=data)
19     if response.status_code != 200:
20         print('网页打开失败')
21         exit(0)
22     response.raise_for_status()
23     response.encoding = response.apparent_encoding
24     soup = BeautifulSoup(response.text, 'lxml')
25     movieUrl = soup.find_all('a')
26     movieUrlSet = set()
27     for movie in movieUrl:
28         temp = re.findall(r'(/vod/.*/)', movie['href'])
29         if len(temp):
30             url = 'http://www.beiwo.tv' + "".join(list(temp))
31             movieUrlSet.add(url)
32     return movieUrlSet
33
34 """
35 解析urls中的url获得编码前的迅雷链接
36 将迅雷链接存放到Thunders中
37 """
38 def UrlParser(url):
39     response = requests.get(url)
40     if response.status_code != 200:
41         print('网页解析失败')
42         exit(0)
43     response.raise_for_status()
44     response.encoding = response.apparent_encoding
45     soup = BeautifulSoup(response.text,'lxml')
46     ThunderUrls = soup.find_all('script')
47     Thunders = re.findall(r'var GvodUrls3 = "(.*###)";',str(ThunderUrls))
48     return Thunders

 1 #main.py
 2 from ThunderUrl import *
 3 from MovieSearch import *
 4
 5 if __name__ == "__main__":
 6     print('请输入要搜索的影片名:',end="")
 7     name = input()
 8     UrlSet = MovieSeach(name)
 9     for url in UrlSet:
10         Thunders = UrlParser(url)
11         for Thunder in Thunders:
12             getThunderUrl(Thunder)

运行结果:

侵删

转载于:https://www.cnblogs.com/MyCodeLife-/p/7522959.html

【爬虫】Python3搜索并获取电影网站的迅雷下载链接相关推荐

  1. 如何 获取百度云 的迅雷下载链接

    寡人经过千百万次的试验, 终于被朕找到最新最有效的获取百度云的迅雷下载链接的方法!!,估计在很长的时间内百度都无法屏蔽!!!!!

  2. Python爬虫小实践:获取某个网站所有的外部链接以及内部链接

    我们在进行爬虫时有的时候不可能只是在一个网站上进行内容上的爬取,理想中的爬虫应该是顺着一个链接从一个页面到另外一个页面,这需要获取页面上的所有的外链,同时收集每个页面上的内链.网站首页上不一定会发现外 ...

  3. 仿权重8高收录面包网pc+手机苹果cmsv8影视网站含迅雷下载N430模板

    苹果cmsv8仿权重8高收录面包电影网模板主题介绍: 模板名称:仿权重8高收录面包网pc+手机苹果cmsv8影视网站含迅雷下载N430模板 模板程序:苹果cmsv8 模板类型:pc+手机 模板颜色:白 ...

  4. Java百度网盘创建链接,java获取百度网盘真实下载链接的方法

    本文实例讲述了java获取百度网盘真实下载链接的方法.分享给大家供大家参考.具体如下: 目前还存在一个问题,同一ip在获取3次以后会出现验证码,会获取失败,感兴趣的朋友对此可以加以完善. 返回的Lis ...

  5. php音乐链接,用PHP获取虾米音乐网的下载链接_php

    做链接转换的时候遇到的.虾米的链接解密有点烦,解法是我看别人的源码得到的.然后我把他改写成了php的版本.贴出来,有需要的就拿去用~ $mp3_id = '';//音乐ID function unes ...

  6. Python爬虫1:批量获取电影标题和剧照

    1.爬取某电影网站的电影名称 下面展示一些 代码. import requests from lxml import etreedef dianying(number):url ='https://w ...

  7. Python 爬虫实现:抓取电影网站信息并入库

    文章目录 一.环境搭建 1.下载安装包 2.修改环境变量 3.安装依赖模块 二.代码开发 三.运行测试 1.新建电影信息表 2.代码运行 四.问题排查和修复 1.空白字符报错 2.请求报错 一.环境搭 ...

  8. 爬取allitebooks网站的电子书下载链接

    allitebooks网址是目前为止还在更新的不多几个电子书免费下载网站.之前一直访问的http://it-ebooks.info由于版权原因已经去掉了全部的下载链接,转型为电子书导购网站.趁着还能访 ...

  9. Python 多线程、利用request使用代理、利用递归深度抓取电影网页的内容并将电影的介绍和下载链接保存到mysql中

    本文仅为学习python过程的一个笔记,其中还有一些bug! 还请各位大佬赐教 有些专业的说法还不是很熟悉,欢迎各位大佬帮忙指出 本人时一个新晋奶爸,而立之年突然想转业,想学习python 先介绍一个 ...

最新文章

  1. 使用qsort对不连续的内存数据排序_数据结构教程_v20201121
  2. 判断字符串是否为正整数 浮点小数
  3. 神经架构搜索(Neural Architecture Search,NAS)介绍
  4. 手机发送验证码的业务逻辑探究-主要是安全性,响应性
  5. asp.net 子域跨域 带cookie
  6. 蓝桥杯 ALGO-31算法训练 开心的金明(01背包,动态规划)
  7. [Hadoop大数据]——Hive数据的导入导出
  8. 软件测试过程中的度量与分析
  9. java怎么设计一个系统吗_谁能帮我设计一个Java的文件管理系统谢谢各位
  10. 您有一封阿里云自动化运维沙龙邀请函待查收
  11. loadrunner安装缺少vc2005
  12. zabbix开启SNMPTrap功能
  13. 服务器系统可以玩英雄联盟吗,用云服务器可以玩英雄联盟吗
  14. 智能终端演绎IT产业大变革
  15. 笔记本怎么设置WIfi热点
  16. aardio 模拟键盘按键,实现msgbox对话框自动关闭
  17. Linux内核调试技术指南
  18. 连续微小线段速度前瞻规划算法
  19. SanDisk Cruzer闪存盘插入电脑后不显示盘符解决方法
  20. 前端面试必会 | 一文读懂 JavaScript 中的 this 关键字

热门文章

  1. 海思Hi3515开发板方案使用介绍
  2. Markdown文本编辑
  3. 银联支付宝微信共同构筑刷脸支付新生态
  4. 股票F10关键字过滤工具:13年年报10转10股票一览,截止2014年3月10日 共67只
  5. 河北省理科2001——2010年一分一档表
  6. 2021新宁二中高考喜报成绩查询,新宁一中、二中、崀高等校高考喜报!最高分684,全县大获得丰收!...
  7. CSS选择器分类(有例子非常全)
  8. html如何设置多级列表,如何在Word文档中设置多级列表
  9. 2020笔记本性价比之王_2020十大笔记本电脑性价比排行(最新笔记本电脑推荐)...
  10. (转载)纳豆的家庭制作、保存和食用