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中实现定制类的特殊方法总结
Sep 28 Python
Python中的各种装饰器详解
Apr 11 Python
解读Python中degrees()方法的使用
May 18 Python
Python实现类似jQuery使用中的链式调用的示例
Jun 16 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
解决Pandas的DataFrame输出截断和省略的问题
Feb 08 Python
python redis 删除key脚本的实例
Feb 19 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
手把手教你用Django执行原生SQL的方法
Feb 18 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 Python
opencv 分类白天与夜景视频的方法
Jun 05 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
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
php简单实现MVC
2015/02/05 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
js multiple全选与取消全选实现代码
2012/12/04 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
js使用心得分享
2015/01/13 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
中学生学习生活的自我评价
2013/10/26 职场文书
大学生实习感言
2014/01/16 职场文书
新闻稿件写作范文
2015/07/18 职场文书
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python