记一次学习爬取豆瓣数据于Excel表的爬虫
本次学习来源于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 主演: 蒂姆·罗宾斯 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表的爬虫相关推荐
- 爬取网络数据到excel表
昨天搞了一个多进程爬电影的小项目,将电影信息进行分类并保存在excel表,可以说以后选好电影都不用一一去豆瓣搜了,直接打开excel表筛选即可,非常的方便快捷,还在等什么,赶紧学起 来. 首先得导入p ...
- Python爬取豆瓣+数据可视化
博客原文和源码下载:Python爬取豆瓣+数据可视化 前言 前段时间应我姐邀请,看了一下Python爬虫.不得不说Python的语法确实简洁优美,可读性强,比较接近自然语言,非常适合编程的初学者上手. ...
- Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1)
Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1) 1. 爬虫设计的技术 1)数据获取,通过http获取网站的数据,如urllib,urllib2,requests等模块: ...
- python爬取豆瓣电影top250的代码_Python爬虫——爬取豆瓣电影Top250代码实例
利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中 ...
- 龙岭迷窟真的这么好看?今天我们就用 Java 爬取豆瓣数据好好分析一下!
每天早上七点三十,准时推送干货 首图来自最近热播的『鬼吹灯之龙岭迷窟』,看过上一部『鬼吹灯之怒晴湘西』同学应该能看懂这个笑点.潘粤明老师上一部还是卸岭魁首陈玉楼,这一部摇身一变成了胡八一. 好了,不扯 ...
- Scrapy框架学习 - 爬取豆瓣电影排行榜TOP250所有电影信息并保存到MongoDB数据库中
概述 利用Scrapy爬取豆瓣电影Top250排行榜电影信息,并保存到MongoDB数据库中 使用pymongo库操作MOngodb数据库 没有进行数据清洗 源码 items.py class Dou ...
- python爬取豆瓣TOP250生成Excel表格例子最新
一 确定爬取网站 因为初学,所以按照网上的教程爬取豆瓣TOP250的网站.网址: https://movie.douban.com/top250 二 编写爬虫程序 详细过程就不再一 一讲解,可以看代码 ...
- Python爬虫项目:爬取JSON数据存储Excel表格与存储图片
随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战.搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Googl ...
- 用python爬取网站数据到excel
```python from bs4 import BeautifulSoup from urllib import request import xlwt#获取数据 value=1 while va ...
- python爬取豆瓣代码_小白的python爬虫,40代码教你爬取豆瓣小说
这篇文章写了很久了,一直没有发布: 爬虫学的差不多了,觉得这篇文章对新手实践还是有些作用的.毕竟这也是我刚学爬虫的时候练习的,爬取了比较好爬的网站,也比较经典:多余的解释不说了,代码里每一行都有注释, ...
最新文章
- Hadoop 全分布模式 平台搭建
- .NET或将引入类型类和扩展
- 【渝粤教育】电大中专Windows操作系统作业 题库
- 银联Apple Pay 总结
- JAVA Linux 排查CPU 过高的方法
- linux 不重启加载内核,解决linux内核升级后不能重启系统的故障
- 关于linux下的共享库(动态库)和静态库
- windows phone越狱、安装xap相关问题
- 常用的计算机PDF资源下载网站
- windows下Tomcat详细安装配置教程
- Windows Server2003服务器密码忘记情况下,密码破解方法汇总
- 左偏树初步学习 洛谷P3377
- Alex网络结构解析
- tcp/ip详解卷一总结
- 服务社-企语系统-F_air21.8的Debian11安装方法,也叫协同管理系统
- CentOS7安装MariaDB的流程步骤
- web开发与django认识 MVC和MVT的区别 路由的匹配
- 2022软件工程师薪资报告出炉!
- 读计算机专业研究生,你不后悔么?
- 持续不定期更新:CFDC++之拟一维喷管流动的数值解(1)
热门文章
- python中间件的作用_graphene-python学习笔记(12)中间件
- 《量化投资策略如何实现超额收益》简介及PDF电子书下载
- dp协议学习----2、SST模式下的TU的计算
- 计算机驱动恢复出厂设置在哪里,Windows系统恢复出厂设置在哪?怎么恢复出厂设置?...
- Win10/edge主页被360,hao123篡改主页问题解决办法2022
- 浏览器主页被篡改为hao123、360和2345解决办法
- 万用表欧姆档和摇表的区别
- 计算机键盘灯光怎么关闭,如何关闭机械键盘的灯[图形介绍]
- C++算法之化繁为简的分治法
- php-fpm优化总结