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之入门(五)缩进和选择
May 27 Python
Python使用MD5加密字符串示例
Aug 22 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
Python 统计字数的思路详解
May 08 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
python自动下载图片的方法示例
Mar 25 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
python属于跨平台语言码
Jun 09 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
Python使用tkinter实现小时钟效果
Feb 22 Python
python 实现定时任务的四种方式
Apr 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
PHP 和 XML: 使用expat函数(二)
2006/10/09 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
js获取页面description的方法
2015/05/21 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
英国在线泳装店:Simply Swim
2019/05/05 全球购物
大学生标准推荐信范文
2013/11/25 职场文书
毕业留言寄语大全
2014/04/10 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
主题教育活动总结
2014/05/05 职场文书
消防宣传标语大全
2015/08/03 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js