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中else语句块的使用技巧
Jun 16 Python
python 类详解及简单实例
Mar 24 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
详解Python给照片换底色(蓝底换红底)
Mar 22 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
python 列表推导式使用详解
Aug 29 Python
Python3常用内置方法代码实例
Nov 18 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
Python3.9.1中使用split()的处理方法(推荐)
Feb 07 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
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
js判断密码强度的方法
2020/03/18 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
python 获取本机ip地址的两个方法
2013/02/25 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
python读写LMDB文件的方法
2018/07/02 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
django连接oracle时setting 配置方法
2019/08/29 Python
python脚本后台执行方式
2019/12/21 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
汽车运用工程毕业生自荐信
2013/10/29 职场文书
业务员薪酬管理制度
2014/01/15 职场文书
专业技术职务聘任书
2014/03/29 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
中层领导干部群众路线对照检查材料思想汇报
2014/10/02 职场文书
老人节标语大全
2014/10/08 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书