Python爬虫——爬取豆瓣电影Top250代码实例


Posted in Python onApril 17, 2019

利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中。基本上爬取结果还是挺好的。具体代码如下:

#!/usr/bin/python
#-*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from bs4 import BeautifulSoup
import re
import urllib2
import xlwt

#得到页面全部内容
def askURL(url):
  request = urllib2.Request(url)#发送请求
  try:
    response = urllib2.urlopen(request)#取得响应
    html= response.read()#获取网页内容
    #print html
  except urllib2.URLError, e:
    if hasattr(e,"code"):
      print e.code
    if hasattr(e,"reason"):
      print e.reason
  return html

#获取相关内容
def getData(baseurl):
  findLink=re.compile(r'<a href="(.*?)" rel="external nofollow" >')#找到影片详情链接
  findImgSrc=re.compile(r'<img.*src="(.*jpg)"',re.S)#找到影片图片
  findTitle=re.compile(r'<span class="title">(.*)</span>')#找到片名
  #找到评分
  findRating=re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
  #找到评价人数
  findJudge=re.compile(r'<span>(\d*)人评价</span>')
  #找到概况
  findInq=re.compile(r'<span class="inq">(.*)</span>')
  #找到影片相关内容:导演,主演,年份,地区,类别
  findBd=re.compile(r'<p class="">(.*?)</p>',re.S)
  #去掉无关内容
  remove=re.compile(r'              |\n|</br>|\.*')
  datalist=[]
  for i in range(0,10):
    url=baseurl+str(i*25)
    html=askURL(url)
    soup = BeautifulSoup(html, "html.parser")
    for item in soup.find_all('div',class_='item'):#找到每一个影片项
      data=[]
      item=str(item)#转换成字符串
      #print item
      link=re.findall(findLink,item)[0]
      data.append(link)#添加详情链接
      imgSrc=re.findall(findImgSrc,item)[0]
      data.append(imgSrc)#添加图片链接
      titles=re.findall(findTitle,item)
      #片名可能只有一个中文名,没有外国名
      if(len(titles)==2):
        ctitle=titles[0]
        data.append(ctitle)#添加中文片名
        otitle=titles[1].replace(" / ","")#去掉无关符号
        data.append(otitle)#添加外国片名
      else:
        data.append(titles[0])#添加中文片名
        data.append(' ')#留空
      rating=re.findall(findRating,item)[0]
      data.append(rating)#添加评分
      judgeNum=re.findall(findJudge,item)[0]
      data.append(judgeNum)#添加评论人数
      inq=re.findall(findInq,item)
      #可能没有概况
      if len(inq)!=0:
        inq=inq[0].replace("。","")#去掉句号
        data.append(inq)#添加概况
      else:
        data.append(' ')#留空
      bd=re.findall(findBd,item)[0]
      bd=re.sub(remove,"",bd)
      bd=re.sub('<br>'," ",bd)#去掉<br>
      bd=re.sub('/'," ",bd)#替换/
      #data.append(bd)
      words=bd.split(" ")
      for s in words:
        if len(s)!=0 and s!=' ':#去掉空白内容
           data.append(s)
      #主演有可能因为导演内容太长而没有
      if(len(data)!=12):
        data.insert(8,' ')#留空
      datalist.append(data)
  return datalist

#将相关数据写入excel中
def saveData(datalist,savepath):
  book=xlwt.Workbook(encoding='utf-8',style_compression=0)
  sheet=book.add_sheet('豆瓣电影Top250',cell_overwrite_ok=True)
  col=('电影详情链接','图片链接','影片中文名','影片外国名',
        '评分','评价数','概况','导演','主演','年份','地区','类别')
  for i in range(0,12):
    sheet.write(0,i,col[i])#列名
  for i in range(0,250):
    data=datalist[i]
    for j in range(0,12):
      sheet.write(i+1,j,data[j])#数据
  book.save(savepath)#保存

def main():
  baseurl='https://movie.douban.com/top250?start='
  datalist=getData(baseurl)
  savapath=u'豆瓣电影Top250.xlsx'
  saveData(datalist,savapath)

main()

Excel表部分内容如下:

Python爬虫——爬取豆瓣电影Top250代码实例

以上所述是小编给大家介绍的Python爬取豆瓣电影Top250实例详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python使用pil生成图片验证码的方法
May 08 Python
小小聊天室Python代码实现
Aug 17 Python
教你使用python画一朵花送女朋友
Mar 29 Python
python实现画一颗树和一片森林
Jun 25 Python
Django框架实现逆向解析url的方法
Jul 04 Python
详解Django解决ajax跨域访问问题
Aug 24 Python
对Python 内建函数和保留字详解
Oct 15 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
python实现WebSocket服务端过程解析
Oct 18 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
Django DRF路由与扩展功能的实现
Jun 03 Python
python自动生成证件号的方法示例
Jan 14 Python
Python2与Python3的区别实例总结
Apr 17 #Python
详解Python用户登录接口的方法
Apr 17 #Python
详解python中递归函数
Apr 16 #Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 #Python
详解Python连接MySQL数据库的多种方式
Apr 16 #Python
详解Python学习之安装pandas
Apr 16 #Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 #Python
You might like
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
分享php多功能图片处理类
2016/05/15 PHP
PHP实现微信对账单处理
2018/10/01 PHP
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
javascript 获取页面的高度及滚动条的位置的代码
2010/05/06 Javascript
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
jQuery预加载图片常用方法
2015/06/15 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
使用python实现画AR模型时序图
2019/11/20 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
南极大冒险观后感
2015/06/05 职场文书
创业计划书之花店
2019/09/20 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
MySQL连接控制插件介绍
2021/09/25 MySQL