本次学习来源于B站up主IT私塾。

爬取豆瓣电影 Top 250  2020年年度前250部电影于Excel,用VScode编写。


#导入所用的模块
import urllib.request                                               #用于操作URL的模块,我们爬取网页的时候,经常需要用到这个库。
import re                                                           #正则表达式可以包含一些可选标志修饰符来控制匹配的模式。
from bs4 import BeautifulSoup                                       #BeautifulSoup4和 lxml 一样,主要的功能是如何解析和提取 HTML/XML 数据。
import xlwt                                                         #Excel表
import time                                                         #时间def main():                                                         #main函数整理baseurl = "https://movie.douban.com/top250?start="              #基础网址datalist = getData(baseurl)                                     #数据表 = “获取数据”函数savepath = "电影.xls"                                           #保存路径saveData(datalist,savepath)                                     #“保存数据”函数#爬取网页
def askURL(url):                                                    #网页爬取函数head = {                                                        #响应头伪装"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"}request = urllib.request.Request(url,headers=head)               #进行封装(有网站和头文件)html = ""                                                        #定义htmltry:                                                             response = urllib.request.urlopen(request)                   #打开网页html =response.read().decode("utf-8")                        #将全部数据于html.(utf-8解码)except urllib.error.URLError as e:                               #可能的异常if hasattr(e, "code"):                                      print(e,"code")                                          #打印出来异常if hasattr(e,"reason"):print(e,"reason")time.sleep(1.5)                                                  #访问间隔(防止短时多次访问)return html#创建正则表达式规则对象(re.compile)         (全局变量)
#<a href="https://movie.douban.com/subject/1292052/">
findLink = re.compile(r'<a href="(.*?)">')                          #筛电影链接
#<img width="100" alt="肖申克的救赎" src="https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.webp" class="">
findImgSrc = re.compile(r'<img.*src="(.*?)"',re.S)                  #筛图片链接
#<span class="title">肖申克的救赎</span>
findTitle = re.compile(r'<span class="title">(.*)</span>')          #筛片名
#<span class="rating_num" property="v:average">9.7</span>
findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')   #筛评分
#<span>2504557人评价</span>
findJudge = re.compile(r'<span>(\d*)人评价</span>')                  #筛评价人数
#<span class="inq">希望让人自由。</span>
findInq = re.compile(r'<span class="inq">(.*)</span>')               #筛概况
#<p class="">导演: 弗兰克·德拉邦特 Frank Darabont&nbsp;&nbsp;&nbsp;主演: 蒂姆·罗宾斯 Tim Robbins /...<br>1994/美国/犯罪 剧情</p>
findBd = re.compile(r'<p class="">(.*?)</p>',re.S)                  #筛相关信息#解析数据
def getData(baseurl):                                               #定义函数datalist =[]                                                    #存入所有的网页数据for i in range(0,10):                                           #调用十次页面信息url = baseurl + str(i*25)                                   #通过循环换网页html = askURL(url)                                          #保存源码#解析数据soup = BeautifulSoup(html,"html.parser")                    #定义解析 解析器#查询有div和class=item (注意:class在Python中属于关键字,所以加_以示区别)for item in soup.find_all('div',class_="item"):             #传入一个列表,返回所有汽配的节点data = []                                               #一部电影的全部item = str(item)                                        #转换成字符串   link = re.findall(findLink,item)[0]                     #re库来查找在item中符合模式的第一个元素([0])data.append(link)                                       #列表追加,到data里imgSrc = re.findall(findImgSrc, item)[0]                #同理data.append(imgSrc)                                     #同理titles = re.findall(findTitle,item)                     #片名中外名字if(len(titles)== 2):                                    #长度=2既有中文也有英文ctitle = titles[0]                                  #单独存储data.append(ctitle)                                 #中文名otitle = titles[1].replace("/","")                  #英文名前有/ ,进行替换data.append(otitle)                                 #外国名else:data.append(titles[0])data.append('  ')                                   #存一个空(excel表)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('<br(\s+)?/>(\s+)?'," ",bd)                 #去掉<br/>bd = re.sub('/'," ", bd)                                #去掉/data.append(bd.strip())                                 #去掉空格datalist.append(data)                                   #数据放入datalistreturn datalist#保存数据     于excel
def saveData(datalist,savepath):                                    #创建函数book = xlwt.Workbook(encoding="utf-8",style_compression=0)      #创建对象sheet = book.add_sheet('电影',cell_overwrite_ok=True)           #创建工作表 覆盖单元格col = ('电影链接','图片链接','影片中文名','影片外国名','评分','评价数','概况','相关信息')for i in range(0,8):                                            #输入数据sheet.write(0,i,col[i])for i in range(0,250):data = datalist[i]for j in range(0,8):sheet.write(i+1,j,data[j])book.save(savepath)                                     #保存到excelif __name__=="__main__":                                    #当程序执行时                              main()                                                  #调用函数mainprint("爬取完成")                                            #完成

记一次学习爬取豆瓣数据于Excel表的爬虫相关推荐

  1. 爬取网络数据到excel表

    昨天搞了一个多进程爬电影的小项目,将电影信息进行分类并保存在excel表,可以说以后选好电影都不用一一去豆瓣搜了,直接打开excel表筛选即可,非常的方便快捷,还在等什么,赶紧学起 来. 首先得导入p ...

  2. Python爬取豆瓣+数据可视化

    博客原文和源码下载:Python爬取豆瓣+数据可视化 前言 前段时间应我姐邀请,看了一下Python爬虫.不得不说Python的语法确实简洁优美,可读性强,比较接近自然语言,非常适合编程的初学者上手. ...

  3. Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1)

    Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1) 1.  爬虫设计的技术 1)数据获取,通过http获取网站的数据,如urllib,urllib2,requests等模块: ...

  4. python爬取豆瓣电影top250的代码_Python爬虫——爬取豆瓣电影Top250代码实例

    利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中 ...

  5. 龙岭迷窟真的这么好看?今天我们就用 Java 爬取豆瓣数据好好分析一下!

    每天早上七点三十,准时推送干货 首图来自最近热播的『鬼吹灯之龙岭迷窟』,看过上一部『鬼吹灯之怒晴湘西』同学应该能看懂这个笑点.潘粤明老师上一部还是卸岭魁首陈玉楼,这一部摇身一变成了胡八一. 好了,不扯 ...

  6. Scrapy框架学习 - 爬取豆瓣电影排行榜TOP250所有电影信息并保存到MongoDB数据库中

    概述 利用Scrapy爬取豆瓣电影Top250排行榜电影信息,并保存到MongoDB数据库中 使用pymongo库操作MOngodb数据库 没有进行数据清洗 源码 items.py class Dou ...

  7. python爬取豆瓣TOP250生成Excel表格例子最新

    一 确定爬取网站 因为初学,所以按照网上的教程爬取豆瓣TOP250的网站.网址: https://movie.douban.com/top250 二 编写爬虫程序 详细过程就不再一 一讲解,可以看代码 ...

  8. Python爬虫项目:爬取JSON数据存储Excel表格与存储图片

    随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战.搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Googl ...

  9. 用python爬取网站数据到excel

    ```python from bs4 import BeautifulSoup from urllib import request import xlwt#获取数据 value=1 while va ...

  10. python爬取豆瓣代码_小白的python爬虫,40代码教你爬取豆瓣小说

    这篇文章写了很久了,一直没有发布: 爬虫学的差不多了,觉得这篇文章对新手实践还是有些作用的.毕竟这也是我刚学爬虫的时候练习的,爬取了比较好爬的网站,也比较经典:多余的解释不说了,代码里每一行都有注释, ...

最新文章

  1. Hadoop 全分布模式 平台搭建
  2. .NET或将引入类型类和扩展
  3. 【渝粤教育】电大中专Windows操作系统作业 题库
  4. 银联Apple Pay 总结
  5. JAVA Linux 排查CPU 过高的方法
  6. linux 不重启加载内核,解决linux内核升级后不能重启系统的故障
  7. 关于linux下的共享库(动态库)和静态库
  8. windows phone越狱、安装xap相关问题
  9. 常用的计算机PDF资源下载网站
  10. windows下Tomcat详细安装配置教程
  11. Windows Server2003服务器密码忘记情况下,密码破解方法汇总
  12. 左偏树初步学习 洛谷P3377
  13. Alex网络结构解析
  14. tcp/ip详解卷一总结
  15. 服务社-企语系统-F_air21.8的Debian11安装方法,也叫协同管理系统
  16. CentOS7安装MariaDB的流程步骤
  17. web开发与django认识 MVC和MVT的区别 路由的匹配
  18. 2022软件工程师薪资报告出炉!
  19. 读计算机专业研究生,你不后悔么?
  20. 持续不定期更新:CFDC++之拟一维喷管流动的数值解(1)

热门文章

  1. python中间件的作用_graphene-python学习笔记(12)中间件
  2. 《量化投资策略如何实现超额收益》简介及PDF电子书下载
  3. dp协议学习----2、SST模式下的TU的计算
  4. 计算机驱动恢复出厂设置在哪里,Windows系统恢复出厂设置在哪?怎么恢复出厂设置?...
  5. Win10/edge主页被360,hao123篡改主页问题解决办法2022
  6. 浏览器主页被篡改为hao123、360和2345解决办法
  7. 万用表欧姆档和摇表的区别
  8. 计算机键盘灯光怎么关闭,如何关闭机械键盘的灯[图形介绍]
  9. C++算法之化繁为简的分治法
  10. php-fpm优化总结