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 相关文章推荐
Python3基础之list列表实例解析
Aug 13 Python
django model去掉unique_together报错的解决方案
Oct 18 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
python实现图片处理和特征提取详解
Nov 13 Python
pandas把所有大于0的数设置为1的方法
Jan 26 Python
python异步存储数据详解
Mar 19 Python
django ManyToManyField多对多关系的实例详解
Aug 09 Python
wxPython实现文本框基础组件
Nov 18 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
python实现udp传输图片功能
Mar 20 Python
python用700行代码实现http客户端
Jan 14 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
当海贼王变成JOJO风
2020/03/02 日漫
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
java script编程起步(第三课)
2007/01/10 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
js实现复制功能(多种方法集合)
2018/01/06 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
Vue自定义多选组件使用详解
2020/09/08 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
Python lxml模块安装教程
2015/06/02 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
详解python logging日志传输
2020/07/01 Python
python中pyplot基础图标函数整理
2020/11/10 Python
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
初三学习计划书范文
2014/04/30 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
安全教育观后感
2015/06/17 职场文书
田径运动会广播稿
2015/08/19 职场文书
SpringRetry重试框架的具体使用
2021/07/25 Java/Android