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实现发送email的几种常用方法
Aug 18 Python
python实现2048小游戏
Mar 30 Python
Python smallseg分词用法实例分析
May 28 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
学习python可以干什么
Feb 26 Python
对python tkinter窗口弹出置顶的方法详解
Jun 14 Python
seek引发的python文件读写的问题及解决
Jul 26 Python
Django用户认证系统 组与权限解析
Aug 02 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
Mar 08 Python
python3通过qq邮箱发送邮件以及附件
May 20 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
python中HTMLParser模块知识点总结
Jan 25 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里8个鲜为人知的安全函数分析
2014/12/09 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
js代码实现轮播图
2020/05/04 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python 性能优化技巧总结
2016/11/01 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
python监控nginx端口和进程状态
2019/09/06 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
Python timeit模块原理及使用方法
2020/10/10 Python
python归并排序算法过程实例讲解
2020/11/04 Python
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
软件测试题目
2013/02/27 面试题
家长给幼儿园的表扬信
2014/01/09 职场文书
园艺师求职信
2014/03/10 职场文书
怀念母亲教学反思
2014/04/28 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
委托公证书格式
2015/01/26 职场文书
教师工作决心书
2015/02/04 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android
vue ref如何获取子组件属性值
2022/03/31 Vue.js