Python爬取电影天堂指定电视剧或者电影
1.分析搜索请求
一位高人曾经说过,想爬取数据,要先分析网站
今天我们爬取电影天堂,有好看的美剧我在上面都能找到,算是很全了。
这个网站的广告出奇的多,用过都知道,点一下搜索就会弹出个窗口,伴随着滑稽的音乐,贪玩蓝月?
通过python,我们可以避免广告,直接拿到我们要的东西

我用的是火狐浏览器,按F12打开开发者工具,选择网络

按照正常的操作顺序,其实python就是在模拟人进行一些网页操作,我们只不过通过python解放自己的双手
在搜索框输入“傲骨贤妻”,当然你输入其他的电视剧名称也可以,查看开发者工具
聪明的你肯定一下就看出来了,对,就是第一个请求,点开

查看参数,keyword中文意思是关键字,我们可以得知,“傲骨贤妻”被encode成了这种看不懂的东西 ,参数kwtype和searchtype感觉没什么用,具体我也不知道干啥的,我们模拟请求的时候,把它俩加上,防止出问题

好了,我们现在可以打开开发工具开始玩耍了,我用的是IntelliJ IDEA,我安装了python插件,和pycharm不会差太多,挺好用的。因为我平时用Java开发比较多,我就懒得再下载其他开发工具。当然你用记事本
我也不反对。我先建立一个film.py,用来放置电视剧名。这是一个好习惯,有些时候安全性比较高的数据专门放在一个文件里,进行加密,或者github忽略不提交,可以避免不必要的麻烦
# coding=utf-8
filmName = '傲骨贤妻'
2.用python模拟搜索请求
建立_init_.py
导入所需要的包 urlib2,re,film,注释已经很清楚了,我来解释下%(film.filmName).decode("utf-8").encode('gb2312'),%是取出我存在film.py里面的值,为什么要用decode在encode呢?右键查看页面源代码,你会发现,电影天堂
并不是utf-8编码,而是gb2312,所以我们要encode呀,刚才我们看到keyword是看不懂的火星文,我们现在知道了,它其实是gb2312编码,所以这里我们把filmName先解码成utf-8,变成能看懂的“傲骨贤妻“,再编码成gb2312
电影天堂后台所能看懂的“傲骨贤妻”,ok,这样so.php就可以执行我们的查询操作,kwtype=0&searchtype=titile带上吧,反正也不累。
关于正则语法,是python基础,可以去慕课网学习,我就不解释了。我们目的是看到html里面超链接的特点,进行正则匹配
# coding=utf-8
import urllib2
import film
import re
opener = urllib2.build_opener()#构建一个handler对象
def search():
req = urllib2.Request('http://s.ygdy8.com/plus/so.php')
#so.php请求参数将中文进行了Url.encode(),所以需要将中文encode('gb2312')处理
req.add_data('kwtype=0&searchtype=title&keyword=%s' %(film.filmName).decode("utf-8").encode('gb2312'))
html = opener.open(req).read().decode('gb2312')
reg = r'/html/tv/oumeitv/[0-9]{8}/[0-9a-zA-Z.]{9,10}'
return re.findall(reg,html)
search()
3.分析下载地址
我们接着对网站进行分析 ,我们刚才搜索完成
现在界面是这样,我们暂时只取第一个,也就是“2014主打美剧《傲骨贤妻》第六季”

点开第一个连接,进入熟悉的界面,终于找到我们想要的了,对,就是下载地址

4.获取下载链接
广告出奇的多。。。还好我禁用了flash
这时候打开idea,写入代码。list获取到search结果,因为search是两个,为了看到效果,我没有遍历,只取第一个搜索结果,即2014主打剧...,这里正则用u是指Unicode string,因为我们这里存在中文
html解码,正则匹配电影天堂下载格式
def openSearchResult():
list = search()
req = urllib2.Request('http://www.ygdy8.com'+list[0])
html = opener.open(req).read().decode('gb2312','ignore')
reg = u'ftp://[a-z0-9]+:[a-z0-9]+@[a-z0-9]+.[a-z]{1,8}.[a-z]{3}:[\d]{4}/[\u4e00-\u9fa5]{0,10}[\W]*\[阳光电影www.ygdy8.com\][\u4e00-\u9fa5]*[\d]+[\u4e00-\u9fa5]\[[\u4e00-\u9fa5]+\].rmvb'
return re.findall(reg,html)
openSearchResult()
然后再用list把openSearchResult遍历出来,Unicode string必须遍历才能看到中文
def getList():
for i in openSearchResult():
print i
getList()
结果如下,复制下来到迅雷就可以下载啦

我把fileName换成行尸走肉

5.源码
这个是正则基本语法https://github.com/cjy513203427/pachong/tree/master/regularExpression
这个是该博客的源码:https://github.com/cjy513203427/pachong/tree/master/downloadDytt
Python爬取电影天堂指定电视剧或者电影的更多相关文章
- 用Python爬取猫眼上的top100评分电影
代码如下: # 注意encoding = 'utf-8'和ensure_ascii = False,不写的话不能输出汉字 import requests from requests.exception ...
- Python爬取中国票房网所有电影片名和演员名字,爬取齐鲁网大陆所有电视剧名称
爬取CBO中国票房网所有电影片名和演员名字 # -*- coding: utf-8 -*- # 爬取CBO中国票房网所有电影片名 import json import requests import ...
- 利用Python爬取豆瓣电影
目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com ...
- Python爬取豆瓣电影top
Python爬取豆瓣电影top250 下面以四种方法去解析数据,前面三种以插件库来解析,第四种以正则表达式去解析. xpath pyquery beaufifulsoup re 爬取信息:名称 评分 ...
- Python爬取豆瓣指定书籍的短评
Python爬取豆瓣指定书籍的短评 #!/usr/bin/python # coding=utf-8 import re import sys import time import random im ...
- Python 爬取 猫眼 top100 电影例子
一个Python 爬取猫眼top100的小栗子 import json import requests import re from multiprocessing import Pool #//进程 ...
- Python爬取视频指南
摘自:https://www.jianshu.com/p/9ca86becd86d 前言 前两天尔羽说让我爬一下菜鸟窝的教程视频,这次就跟大家来说说Python爬取视频的经验 正文 https://w ...
- Python 爬取所有51VOA网站的Learn a words文本及mp3音频
Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...
- python爬取网站数据
开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...
随机推荐
- First App on Phonegap | Cordova
Phonegap简介 PhoneGap是一能够让你用普通的web技术编写出能够轻松调用api接口和进入应用商店的 html5应用开发平台,是唯一支持7个平台的开源移动框架. 优势: 1.兼容性:多平台 ...
- WebApi中跨域请求的解决方案和原理
跨域请求仅发生在JavaScript发起Ajax请求时,浏览器对请求的限制,通常只允许访问同一个域中的资源,或者目标服务器明确的通知浏览器允许该域访问资源. 那么什么叫跨域的:主机地址或者ip地址或者 ...
- ViewController关闭自身返回前一个View
点击按钮号响应的函数 @IBAction func onBack(sender : AnyObject) { self.dismissViewControllerAnimated(true, comp ...
- gulp 图片、样式、js、实时刷新等压缩gulpfile.js文件各个模块
1.压缩tinypng图片 gulp-tinypng-nokey,但不压缩gif格式(另外一个gulp-imagemin压缩率不高,可以压缩gif格式) // 获取 gulp var gulp = ...
- jQuery判断是否选中
1.判断check是否选中 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- vue.js 知识点(二)
关于vue看到有很多的知识点和react有很多相近的地方,比如说路由还有一些简单的运用,但是又有一些不同,比如格式.还有写法的一些不同! 所以在这里我总结一下关于vue 关于路由的一些运用: 路由: ...
- secureCRT颜色方案设置
按照如下设置后vim编辑会有如下颜色提示
- docker部署生产环境下的tomcat
1. dockerfile文件 FROM tomcat:7-jre8 WORKDIR /etc COPY ./Shanghai /etc/localtime WORKDIR /usr/share/zo ...
- python+requests接口自动化测试框架实例详解
python+requests接口自动化测试框架实例详解 转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...
- nginx高性能WEB服务器系列之三版本升级
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...