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异步任务队列示例
Apr 01 Python
python实现2048小游戏
Mar 30 Python
用C++封装MySQL的API的教程
May 06 Python
Python编写电话薄实现增删改查功能
May 07 Python
简单谈谈Python中函数的可变参数
Sep 02 Python
python 内置函数filter
Jun 01 Python
Django开发中复选框用法示例
Mar 20 Python
Flask框架各种常见装饰器示例
Jul 17 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
学Python 3的理由和必要性
Nov 19 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
Python猫眼电影最近上映的电影票房信息
Sep 18 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自动获取目录下的模板的代码
2010/08/08 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
php微信开发之上传临时素材
2016/06/24 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
webpack 处理CSS资源的实现
2019/09/27 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
python简单读取大文件的方法
2016/07/01 Python
python脚本替换指定行实现步骤
2017/07/11 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
2018/11/20 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
开业庆典答谢词
2014/01/18 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
小学家长通知书评语
2014/12/31 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书
Python Matplotlib绘制两个Y轴图像
2022/04/13 Python