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网络编程学习笔记(10):webpy框架
Jun 09 Python
python实现的文件同步服务器实例
Jun 02 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
python制作图片缩略图
Apr 30 Python
Python Pandas 箱线图的实现
Jul 23 Python
基于Python2、Python3中reload()的不同用法介绍
Aug 12 Python
wxPython实现整点报时
Nov 18 Python
Pyqt5自适应布局实例
Dec 13 Python
基于plt.title无法显示中文的快速解决
May 16 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 Python
python基于pexpect库自动获取日志信息
Feb 01 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
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
javascript运动详解
2015/07/06 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
python3实现点餐系统
2019/01/24 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
英国著名书店:Foyles
2018/12/01 全球购物
广播体操比赛口号
2014/06/10 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
个人委托函范文
2015/01/29 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
医德医风学习心得体会
2016/01/25 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS