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中使用select模块实现非阻塞的IO
Feb 03 Python
一键搞定python连接mysql驱动有关问题(windows版本)
Apr 23 Python
Python实现网络端口转发和重定向的方法
Sep 19 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
python 获取当天每个准点时间戳的实例
May 22 Python
python验证码识别教程之滑动验证码
Jun 04 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
Python 调用有道翻译接口实现翻译
Mar 02 Python
基于pycharm实现批量修改变量名
Jun 02 Python
python中pop()函数的语法与实例
Dec 01 Python
如何用tempfile库创建python进程中的临时文件
Jan 28 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 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/03 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
Vue.extend构造器的详解
2017/07/17 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
Python简单实现控制电脑的方法
2018/01/22 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
Pytorch释放显存占用方式
2020/01/13 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
当当网软件测试笔试题
2015/11/24 面试题
金融学专科生自我鉴定
2014/02/21 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
普通党员个人整改措施
2014/10/27 职场文书
把77A收信机改造成收音机
2022/04/05 无线电
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL