爬虫爬取豆瓣电影排行,保存到excel和SQLite
# -*- coding = utf-8 -*-
# @Time : 2021/11/18 19:54
# @Author : Vvfrom bs4 import BeautifulSoup # 网页解析,获取数据
import re # 正则表达式,进行文字匹配
import urllib.request, urllib.error # 制定url 获取网页数据
import xlwt # 进行excel操作
import sqlite3 # 进行SQLite数据库操作def main():baseurl = "https://movie.douban.com/top250?start="# 1、爬取网页datalist = getData(baseurl)savepath = "豆瓣电影Top250.xls"dbpath = "movie.db"# 3、保存数据saveData(datalist, savepath)# saveData2Db(datalist, dbpath)# askURL("https://movie.douban.com/top250?start=")# 影片详情链接的规则
findLink = re.compile(r'<a href="(.*?)">') # 创建正则表达式对象,表示规则(字符串的模式)
# 影片图片
findImgSrc = re.compile(r'<img .*src="(.*?)"', re.S) # 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)# 爬取网页
def getData(baseurl):datalist = []for i in range(0,10): # 调用获取页面信息的函数,10次url = baseurl + str(i * 25)html = askURL(url) # 保存获取到的网页源码# 2、逐一解析数据soup = BeautifulSoup(html, 'html.parser')for item in soup.find_all('div', class_="item"): # 查找符合要求的字符串,形成列表# print(item) # 测试查看 i 全部信息data = [] # 保存一部电影的全部信息item = str(item)# 影片详情链接link = re.findall(findLink, item)[0] # re库用来通过正则表达式查找指定的字符串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('<br(\s+)?/>(\s+)?', " ", bd) # 去掉<br/>bd = re.sub('/', " ", bd) # 替换/data.append(bd.strip()) # 去掉前后的空格datalist.append(data) # 把处理好的一部电影信息放入datalist# print(datalist)return datalist# 得到指定一个 url 的网页内容
def askURL(url):head = { # 模拟浏览器头部信息,向豆瓣服务器发送消息"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36"}# 用户代理,表示告诉豆瓣服务器,我们是什么类型的机器、浏览器(本质上是告诉浏览器,我们可以接受什么水平的文件内容)request = urllib.request.Request(url, headers=head)html = ""try:response = urllib.request.urlopen(request)html = response.read().decode('utf-8')# print(html)except urllib.error.URLError as e:if hasattr(e, "code"):print(e.code)if hasattr(e, "reason"):print(e.reason)return html# 3、保存数据
def saveData(datalist,savepath):# print("test...")book = xlwt.Workbook(encoding='utf-8', style_compression=0) # 创建workbook对象sheet = book.add_sheet('豆瓣电影Top250', cell_overwrite_ok=True) # 创建工作表col = ('电影详情链接', '图片链接', '影片中文名', '影片外文名', '评分', '评分数', '概况', '相关信息')for i in range(0, 8):sheet.write(0, i, col[i]) # 列名for i in range(0, 250):print('第%d条' %i)data = datalist[i]for j in range(0,8):sheet.write(i+1, j, data[j]) # 数据book.save(savepath) # 保存def saveData2Db(datalist,dbpath):init_db(dbpath)conn = sqlite3.connect(dbpath)cur = conn.cursor()for data in datalist:for index in range(len(data)):if index == 4 or index == 5 :continuedata[index] = '"' + data[index] + '"'sql = '''insert into movie250(info_link, pic_link, cname, ename, score, rated, instroduction, info)values (%s)'''%",".join(data)cur.execute(sql)conn.commit()cur.close()conn.close()def init_db(dbpath):sql = '''create table movie250(id integer primary key autoincrement ,info_link text ,pic_link text ,cname varchar ,ename varchar ,score numeric ,rated numeric ,instroduction text ,info text)''' # 创建数据表conn = sqlite3.connect(dbpath)cursor = conn.cursor()cursor.execute(sql)conn.commit()conn.close()if __name__ == '__main__': # 当程序执行时main()# init_db("testmovie.db")print("爬取完毕")
爬虫爬取豆瓣电影排行,保存到excel和SQLite相关推荐
- python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中
我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pan ...
- Python爬虫 爬取豆瓣电影TOP250
Python爬虫 爬取豆瓣电影TOP250 最近在b站上学习了一下python的爬虫,实践爬取豆瓣的电影top250,现在对这两天的学习进行一下总结 主要分为三步: 爬取豆瓣top250的网页,并通过 ...
- python爬虫豆瓣电影评价_使用爬虫爬取豆瓣电影影评数据Python版
在 使用爬虫爬取豆瓣电影影评数据Java版 一文中已详细讲解了爬虫的实现细节,本篇仅为展示Python版本爬虫实现,所以直接上代码 完整代码 爬虫主程序 # 爬虫启动入口 from C02.data ...
- Python爬虫爬取豆瓣电影评论内容,评论时间和评论人
Python爬虫爬取豆瓣电影评论内容,评论时间和评论人 我们可以看到影评比较长,需要展开才能完整显示.但是在网页源码中是没有显示完整影评的.所以我们考虑到这部分应该是异步加载的方式显示.所以打开网页的 ...
- 爬取豆瓣电影排行top250
功能描述V1.0: 爬取豆瓣电影排行top250 功能分析: 使用的库 1.time 2.json 3.requests 4.BuautifulSoup 5.RequestException 上机实验 ...
- python爬取豆瓣电影top250的代码_Python爬虫——爬取豆瓣电影Top250代码实例
利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中 ...
- Python爬虫新手入门教学(一):爬取豆瓣电影排行信息
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...
- [爬虫] 爬取豆瓣电影排行榜
申明:本文对爬取的数据仅做学习使用,不涉及任何商业活动,侵删 爬取豆瓣电影排行榜 这是一个Scrapy框架入门级的项目, 它可以帮助我们基本了解Scrapy的操作流程和运行原理 这次我们要做例子的网站 ...
- 爬虫爬取豆瓣电影top250
最新研究了下爬虫,且将信息保存到EXCEL和sqlite: 代码供参考: 代码如下: # This is a sample Python script.# Press Shift+F10 to exe ...
最新文章
- 我的新浪微博,顺便总结下近况
- Android Studio 项目代码全部消失--出现原因及解决方法
- 修改Android下的radioButton字体的颜色
- 推荐 12 个学习前端必备的神仙级工具类项目与网站
- h5上传图片_怎么搭建自己的H5响应式网站
- Nutshell中的Java 8语言功能-第1部分
- opensips mysql 认证_基于ubuntu中使用mysql实现opensips用户认证的解决方法
- 配置说明_温室移动喷灌机简介以及配置说明
- 人月神话:微软开发模式和原则[转]
- NLP任务增强:通过引入外部知识来提供额外信息
- 如何处理Spring、Ibatis结合MySQL数据库使用时的事务操作
- python计算矩阵的散度_数据集相似度度量之KLJS散度
- (深度剖析结构)模块化解释矢量控制
- 剑指offer刷题记录(C++)
- 文档型数据库Mongodb
- 思科Cisco Telnet(三种认证方式)
- 随意编辑网页内容的简单方法
- STM32开发(14)----CubeMX配置ADC
- 分布式事务框架seata介绍
- 点开瞅瞅,再来几道Python面试题吧,Python面试题No20