Python抓取电影天堂电影信息的代码


Posted in Python onApril 07, 2016

Python2.7Mac OS

抓取的是电影天堂里面最新电影的页面。链接地址: http://www.dytt8.net/html/gndy/dyzz/index.html

获取页面的中电影详情页链接

import urllib2
import os
import re
import string


# 电影URL集合
movieUrls = []


# 获取电影列表
def queryMovieList():

 url = 'http://www.dytt8.net/html/gndy/dyzz/index.html' 
 conent = urllib2.urlopen(url)
 conent = conent.read()
 conent = conent.decode('gb2312','ignore').encode('utf-8','ignore') 
 pattern = re.compile ('<div class="title_all"><h1><font color=#008800>.*?</a>></font></h1></div>'+
      '(.*?)<td height="25" align="center" bgcolor="#F4FAE2"> ',re.S)
 items = re.findall(pattern,conent) 
 
 str = ''.join(items)
 pattern = re.compile ('<a href="(.*?)" class="ulink">(.*?)</a>.*?<td colspan.*?>(.*?)</td>',re.S)
 news = re.findall(pattern, str)

 for j in news:
  
  	movieUrls.append('http://www.dytt8.net'+j[0])

抓取详情页中的电影数据

def queryMovieInfo(movieUrls):

 for index, item in enumerate(movieUrls):

 print('电影URL: ' + item)

 conent = urllib2.urlopen(item)
 conent = conent.read()
 conent = conent.decode('gb2312','ignore').encode('utf-8','ignore') 


 movieName = re.findall(r'<div class="title_all"><h1><font color=#07519a>(.*?)</font></h1></div>', conent, re.S)
 if (len(movieName) > 0):
  movieName = movieName[0] + ""
  # 截取名称
  movieName = movieName[movieName.find("《") + 3:movieName.find("》")]
 else:
  movieName = ""

 print("电影名称: " + movieName.strip())

 movieContent = re.findall(r'<div class="co_content8">(.*?)</tbody>',conent , re.S)


 pattern = re.compile('<ul>(.*?)<tr>', re.S)
 movieDate = re.findall(pattern,movieContent[0])

 if (len(movieDate) > 0):
  movieDate = movieDate[0].strip() + ''
 else:
  movieDate = ""

 print("电影发布时间: " + movieDate[-10:])

 pattern = re.compile('<br /><br />(.*?)<br /><br /><img')
 movieInfo = re.findall(pattern, movieContent[0])

 if (len(movieInfo) > 0):
  movieInfo = movieInfo[0]+''

  # 删除<br />标签
  movieInfo = movieInfo.replace("<br />","")

  # 根据 ◎ 符号拆分

  movieInfo = movieInfo.split('◎')

 else:
  movieInfo = ""

 print("电影基础信息: ")

 for item in movieInfo:
  print(item)


 # 电影海报
 pattern = re.compile('<img.*? src="(.*?)".*? />', re.S)		
 movieImg = re.findall(pattern,movieContent[0])

 if (len(movieImg) > 0):
  movieImg = movieImg[0]
 else:
  movieImg = ""
 
 print("电影海报: " + movieImg)

 pattern = re.compile('<td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><a href="(.*?)">.*?</a></td>', re.S)
 movieDownUrl = re.findall(pattern,movieContent[0])

 if (len(movieDownUrl) > 0):
  movieDownUrl = movieDownUrl[0]
 else:
  movieDownUrl = ""

 print("电影下载地址:" + movieDownUrl + "")

 print("------------------------------------------------\n\n\n")

执行抓取

if __name__=='__main__':

  print("开始抓取电影数据");
 
  queryMovieList()
  print(len(movieUrls))

  queryMovieInfo(movieUrls)
  print("结束抓取电影数据")

总结

学好正则表达式很重要,很重要,很重要!!!! Python的语法好有感觉, 对比Java …

Python 相关文章推荐
python根据距离和时长计算配速示例
Feb 16 Python
Python 字符串大小写转换的简单实例
Jan 21 Python
深入理解Python3中的http.client模块
Mar 29 Python
python判断字符串是否是json格式方法分享
Nov 07 Python
python取代netcat过程分析
Feb 10 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
详解python多线程、锁、event事件机制的简单使用
Apr 27 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
Python中的With语句的使用及原理
Jul 29 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
python利用pytesseract 实现本地识别图片文字
Dec 14 Python
Python Requests安装与简单运用
Apr 07 #Python
Python Requests 基础入门
Apr 07 #Python
Python检测网站链接是否已存在
Apr 07 #Python
python多进程共享变量
Apr 06 #Python
python socket多线程通讯实例分析(聊天室)
Apr 06 #Python
python文件的md5加密方法
Apr 06 #Python
python制作爬虫并将抓取结果保存到excel中
Apr 06 #Python
You might like
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
深入解析Python中的线程同步方法
2016/06/14 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
市场部管理制度
2014/02/02 职场文书
2014年教研工作总结
2014/12/06 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis
python实现局部图像放大
2021/11/17 Python