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使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
使用python3构建文件传输的方法
Feb 13 Python
Python零基础入门学习之输入与输出
Apr 03 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
python列表,字典,元组简单用法示例
Jul 11 Python
Python笔记之工厂模式
Nov 20 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
python3 sorted 如何实现自定义排序标准
Mar 12 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 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类的使用 实例代码讲解
2009/12/28 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
bootstrap 表单验证使用方法
2017/01/11 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
图解javascript作用域链
2019/05/27 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
Python装饰器decorator用法实例
2014/11/10 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
python3操作mysql数据库的方法
2017/06/23 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
什么是python类属性
2020/06/10 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
什么是lambda函数
2013/09/17 面试题
大学校园生活自我鉴定
2014/01/13 职场文书
社区中秋节活动方案
2014/01/29 职场文书
庆七一宣传标语
2014/10/08 职场文书
党支部四风整改方案
2014/10/25 职场文书
婚宴主持词
2015/06/30 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
python中tkinter复选框使用操作
2021/11/11 Python