对于喜欢电影的人来说各种电影资源必不可少,但每次自己搜索都比较麻烦,索性用python自己写一个自动搜索的脚本。

这里我只分享我的思路,具体如何实现参考代码,要想实现搜索功能先要抓包分析如何发送数据,这里我用的是burp,

这是电影网站搜索框,

输入电影名抓取数据报:

数据一get方式提交,并且进行了url编码,%E9%BB%91%E8%B1%B9进行url解码后正是“黑豹”两个字

python中用于处理url编码的是urllib中的quote模块

name=黑豹
uname=quote(name)
所以我们提交数据的地址为:url='http://www.btbtdy.com/search/'+uname+'.html'
之后就得到这个界面:


我们只需要拿到最顶端的那个连接就行,直接用beautifulsoup进行匹配也可以用re正则匹配,找到“黑豹"两个字的herf属性即可
最后得到的数据为”/btdy/dy7706.html",与原网址进行拼接记得到我们要找电影资源的主页面为:
http://www.btbtdy.com/btdy/dy7706.html
到达主页面后,如果你直接用以前的办法直接用正则或其他的办法去匹配磁力链接的话是不行的,因为这是一个动态的页面,
思路依旧是抓包分析,可以看出主页面提交后有提交多个其他的请求,其中有也个请求是这样的:

在网页上访问后是这样的:

这才是我们要找的网页,只有在这个网页上才能找到真正的资源

上代码:(代码还没有进行异常处理)

 1 import requests
2 from bs4 import BeautifulSoup
3
4 from urllib.parse import quote
5 import time
6 import re
7 import threading
8
9 head = {
10 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
11 'Referer':'http://www.btbtdy.com/'
12 }
13
14 print('-----------------------------')
15 name=input('请输入需要查找的电影:')
16 print('-----------------------------')
17 uname=quote(name)
18
19 def pyhead():
20
21 url='http://www.btbtdy.com/search/'+uname+'.html'
22
23 return url
24
25 def gethtml(url):
26
27 link=url
28 html=requests.get(link,head)
29 time.sleep(5)
30 soup = BeautifulSoup(html.text, "lxml")
31 html = html.content.decode('utf-8')
32 sorry="对不起,没有找到任何记录,"
33 sodiv=soup.find('div',class_="list_so")
34 if sorry in str(sodiv):
35 print("网站没有资源")
36 else:
37 title=soup.find_all('a',class_="so_pic")
38 r=r'href="(.+?)" '
39 title=re.findall(r,str(title[0]))
40 print("网址为:http://www.btbtdy.com"+title[0])
41 return title
42
43 def gethtml2(title):
44 dr=r'btdy/dy(.+?).html'
45 dtit=re.findall(dr,title[0])
46 url2='http://www.btbtdy.com/vidlist/'+dtit[0]+'.html'
47 dhtml=requests.get(url2,head)
48 time.sleep(5)
49 dsoup=BeautifulSoup(dhtml.text,'lxml')
50 return dsoup
51
52 def getdhtml(dsoup):
53 ddiv=dsoup.find_all('div',class_="p_list")
54 for model in ddiv:
55 h="<h2>720p下载地址</h2>"
56 h2="<h2>1080p下载地址</h2>"
57 h3="<h2>下载地址一</h2>"
58 if h in str(model):
59 print("720p:"'\n')
60 r='<a class="d1" href="(.+?)">磁力</a>'
61 dlink=re.findall(r,str(model))
62 for pdlink in dlink:
63 print(str(pdlink)+'\n')
64 if h2 in str(model):
65 print("1080p:"'\n')
66 r='<a class="d1" href="(.+?)">磁力</a>'
67 dlink=re.findall(r,str(model))
68 for pdlink in dlink:
69 print(str(pdlink))
70 if h3 in str(model):
71 print("磁力连接:"'\n')
72 r='<a class="d1" href="(.+?)">磁力</a>'
73 dlink=re.findall(r,str(model))
74 for pdlink in dlink:
75 print(str(pdlink)+'\n')
76
77
78 def start():
79 url=pyhead()
80 title=gethtml(url)
81 dsoup=gethtml2(title)
82 getdhtml(dsoup)
83 if __name__ == '__main__':
84 go=threading.Thread(start())
85 go.start()

使用Python实现搜索任意电影资源的磁力链接的更多相关文章

  1. 第11.5节 Python正则表达式搜索任意字符匹配及元字符“.”(点)功能介绍

    在re模块中,任意字符匹配使用"."(点)来表示, 在默认模式下,点匹配除了换行的任意字符.如果指定了搜索标记re.DOTALL ,它将匹配包括换行符的任意字符.关于搜索标记的含义 ...

  2. 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

    [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...

  3. nodejs 实现 磁力链接资源搜索 BT磁力链接爬虫

    项目简介 前端站点 项目效果预览 http://findcl.com 使用 nodejs 实现磁力链接爬虫 磁力链接解析成 torrent种子信息,保存到数据库,利用 Elasticsearch 实现 ...

  4. Python爬虫爬取BT之家找电影资源

    一.写在前面 最近看新闻说圣城家园(SCG)倒了,之前BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越强,但是很多资源在 ...

  5. Python爬虫 -- 抓取电影天堂8分以上电影

    看了几天的python语法,还是应该写个东西练练手.刚好假期里面看电影,找不到很好的影片,于是有个想法,何不搞个爬虫把电影天堂里面8分以上的电影爬出来.做完花了两三个小时,撸了这么一个程序.反正蛮简单 ...

  6. 学习Python编程的11个资源

    用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因 ...

  7. 利用Python爬取豆瓣电影

    目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com ...

  8. 找电影资源最强攻略,知道这些你就牛B了!

    找电影资源最强攻略,知道这些你就牛B了! 电影工厂 2015-07-01 · 分享   点击题目下方环球电影,关注中国顶尖电影微杂志 我们也许没有机会去走遍千山万水,却可以通过电影进入各种各样的角色来 ...

  9. 学习 Python 编程的 19 个资源 (转)

    学习 Python 编程的 19 个资源 2018-01-07 数据与算法之美 编译:wzhvictor,英文:codecondo segmentfault.com/a/119000000418731 ...

随机推荐

  1. POJ 3294 后缀数组

    题目链接:http://poj.org/problem?id=3294 题意:给定n个字符串,求一个最长子串要求在超过一半的字符串中出现过. 如果多解按字典序输出 思路:根据<<后缀数组— ...

  2. 睡眠--TASK_INTERRUPTIBLE and TASK_UNINTERRUPTIBLE

    http://i.cnblogs.com/EditPosts.aspx?opt=1   Two states are associated with sleeping, TASK_INTERRUPTI ...

  3. erlang判断语法结构:if/case/guard

    erlang 有好几种常用的判断结构语句,如 if.case.guard 等.文章将分别对 if / case /guard 的特点做介绍,以及用例说明 1.if 结构 if Condition 1  ...

  4. 高效算法——J 中途相遇法,求和

    ---恢复内容开始--- J - 中途相遇法 Time Limit:9000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Su ...

  5. Linux学习方法之以始为终—Linux工作分类

    /** ****************************************************************************** * @author    暴走的小 ...

  6. .net core版 文件上传/ 支持批量上传,拖拽以及预览,bootstrap fileinput上传文件

    asp.net mvc请移步 mvc文件上传支持批量上传,拖拽以及预览,文件内容校验 本篇内容主要解决.net core中文件上传的问题  开发环境:ubuntu+vscode 1.导入所需要的包:n ...

  7. TOMCAT启动到一半停止如何解决

    当你的项目过大的时候,往往会导致你的TOMCAT启动时间过长,启动失败,遇到该情况可以试一下下面两招: TOmcat启动到一半的时候停止了,以下原因: 1.  tomcat启动时间超过了设置时间: 解 ...

  8. cmd wevtutil 读取远程日志错误,Error:在没有配置的 DNS 服务器响应之后,名称 Server23.localdomain 的名称解析超时。

    想要根据xml文件筛选器读取远程主机最新的几条日志,结果老是提示: Error : wevtutil qe SystemQuery.xml /f:text /rd: /sq:true /r:\\*** ...

  9. web前端(12)—— 页面布局2

    本篇博文,主要就讲定位的问题,也就是页面布局里最重要的,本篇博文不出意外的话,也是css的最后一篇博文了 定位,position属性 定位有三种: 相对定位 绝对定位 固定定位 相对定位,positi ...

  10. POJ3020:Antenna Placement(二分图匹配)

    Antnna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11093   Accepted: 5459 ...