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使用OpenCV进行标定
May 08 Python
python中对数据进行各种排序的方法
Jul 02 Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 Python
python3通过qq邮箱发送邮件以及附件
May 20 Python
python中tab键是什么意思
Jun 18 Python
django models里数据表插入数据id自增操作
Jul 15 Python
Anaconda的安装与虚拟环境建立
Nov 18 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 Python
python中编写函数并调用的知识点总结
Jan 13 Python
Python中递归以及递归遍历目录详解
Oct 24 Python
python中的3种定义类方法
Nov 27 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
Mar 20 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
探讨如何把session存入数据库
2013/06/07 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
让你的网站可编辑的实现js代码
2009/10/19 Javascript
div移动 输入框不能输入的问题
2009/11/19 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
js简单实现自动生成表格功能示例
2020/06/02 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
django ajax json的实例代码
2018/05/29 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
python新式类和经典类的区别实例分析
2020/03/23 Python
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
《路旁的橡树》教学反思
2014/04/07 职场文书
快餐公司创业计划书
2014/04/29 职场文书
班级课外活动总结
2014/07/09 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
股指期货心得体会
2014/09/10 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python