对豆瓣进行爬虫来获取相关数据(分别保存到Excel表格和sqlite中)
1.存入Excel表格的代码:
from bs4 import BeautifulSoup #网页解析,获取数据
import re #正则表达式,进行文字匹配
import urllib.request,urllib.error,urllib.parse #制定URL,获取网页数据
import xlwt #进行excel操作
import sqlite3 #进行SQLLite数据库操作def main():baseurl="https://movie.douban.com/top250?start="#1.爬取网页datalist=getData(baseurl)savepath="豆瓣电影Top250.xls"#3.保存数据saveData(datalist,savepath)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"): #查找符合要求的字符串,形成列表data = [] #保存一部电影的所有信息item = str(item)#link获取到影片详情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(" ") #留空# data.append(inq)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) #处理好的一部电影信息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/80.0.3987.163 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#保存数据
def saveData(datalist,savepath):print("save,,,,")book = xlwt.Workbook(encoding="uft-8",style_compression=0) # 创建workbook对象sheet = book.add_sheet("sheet1",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) # 保存数据表if __name__ == "__main__": #当程序执行时main()print("爬取完毕")
最终结果(excel表格):
2.利用sqlite数据库进行存取
sqlite数据库连接的常用语句
import sqlite3#建立数据库 conn = sqlite3.connect("test.db") #打开或创建数据库文件 print("Opened database successfully") c = conn.cursor() #获取游标sql = '''需要填写的SQL语句'''c.execute(sql) #执行SQL语句 conn.commit() #提交数据库操作 conn.close() #关闭数据库
from bs4 import BeautifulSoup #网页解析,获取数据
import re #正则表达式,进行文字匹配
import urllib.request,urllib.error,urllib.parse #制定URL,获取网页数据
import xlwt #进行excel操作
import sqlite3 #进行SQLLite数据库操作def main():baseurl="https://movie.douban.com/top250?start="#1.爬取网页datalist=getData(baseurl)#设置保存路径 dbpath为保存到sqlite中,savepath保存到Excel表格dbpath ="moive.db"#savepath="豆瓣电影Top250.xls"#3.保存数据 saveData(datalist,savepath)保存到Excel表格,#saveData(datalist,savepath)saveData2(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"): #查找符合要求的字符串,形成列表data = [] #保存一部电影的所有信息item = str(item)#link获取到影片详情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(" ") #留空# data.append(inq)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) #处理好的一部电影信息#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/80.0.3987.163 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#保存数据
def saveData(datalist,savepath):print("save,,,,")book = xlwt.Workbook(encoding="uft-8",style_compression=0) # 创建workbook对象sheet = book.add_sheet("sheet1",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 saveData2(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,sorce,rated,instroduction,info)values(%s)'''%",".join(data)print(sql)cur.execute(sql)conn.commit()cur.close()conn.close()print("....")def init_db(dbpath):sql = '''create table movie250(id integer primary key autoincrement,info_link text,pic_link text,cname varchar,ename varchar,sorce 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()print("爬取完毕")
运行结果:
对豆瓣进行爬虫来获取相关数据(分别保存到Excel表格和sqlite中)相关推荐
- 怎么把matlab中的图导出,matlab的数据能保存到excel表格-如何将matlab 中输出的图形保存到Excel中去,详细点...
怎样将MATLAB中的数据输出到excel中 数据保存到excel文件 xlswrite(xlsfile, data, sheet, range); % sheet 和 range可以不指定 如: x ...
- 【Python练习】如何使用Pandas获取“豆瓣电影”相关数据,并生成Excel表格
使用Python获取"豆瓣电影"相关数据,并生成Excel表格 本文使用了requests和pandas第三方库,对豆瓣电影各相关数据进行爬取,并记录至Excel表格内.但发现存在 ...
- Python爬虫鲁迅先生《经典语录》保存到Excel表格(附源码)
Python爬虫鲁迅先生<经典语录>保存到Excel表格(附源码) 前言 今天用Python 爬取鲁迅先生<经典语录>,直接开整~ 代码运行效果展示 开发工具 Python版本 ...
- Crawler:基于BeautifulSoup库+requests库+伪装浏览器的方式实现爬取14年所有的福彩网页的福彩3D相关信息,并将其保存到Excel表格中
Crawler:Python爬取14年所有的福彩信息,利用requests库和BeautifulSoup模块来抓取中彩网页福彩3D相关的信息,并将其保存到Excel表格中 目录 输出结果 核心代码 输 ...
- python提取pdf表格数据并保存到excel中
pdfplumber操作pdf文件 python开源库pdfplumber,可以较为方便地获取pdf的各种信息,包含pdf的基本信息(作者.创建时间.修改时间-)及表格.文本.图片等信息,基本可以满足 ...
- python提取txt数据到excel_python 读取txt中每行数据,并且保存到excel中的实例
使用xlwt读取txt文件内容,并且写入到excel中,代码如下,已经加了注释. 代码简单,具体代码如下: # coding=utf-8 ''' main function:主要实现把txt中的每行数 ...
- python逐行读取txt写入excel_python 读取txt中每行数据,并且保存到excel中的实例
使用xlwt读取txt文件内容,并且写入到excel中,代码如下,已经加了注释. 代码简单,具体代码如下: # coding=utf-8 ''' main function:主要实现把txt中的每行数 ...
- MATLAB 数据自动保存到Excel操作
MATLAB 数据自动保存到Excel操作 欢迎学习交流! 邮箱: z-@1-6.com 网站: https://zephyrhours.github.io/ 在实验中,有时候将每次实验计算的结果一一 ...
- 将爬取的数据保存到Excel表格
第一步.导入模块 import xlwt # 导入写入excel需要的包 第二步.定义函数,将爬取好的数据保存到excel文件中,下面以保存python的关键词为例,介绍详细流程. def write ...
最新文章
- java.io.IOException: No FileSystem for scheme: hdfs
- VRRP与VLAN实验(HuaWei)
- 影响软件测试未来的5件事 (译)
- asp.net 中文编码问题
- c4d fbx大小_C4D设计人员必备的八大外挂神器,爱了爱了!【133期】
- Java小白进阶笔记(2)-变量和数据类型
- 高品质平板电脑模型为您的作品演示加分
- http://book.ifeng.com/lianzai/detail_2011_05/08/6243572_37.shtml
- 鱼C论坛_VIP二号光盘
- Html5-audio标签简介及手机端不自动播放问题
- Google Code的简单使用
- 转 C++异常机制的实现方式和开销分析 白杨 http://baiy.cn
- AI玩游戏系列,机器学习玩游戏(1) 一维游戏
- 记录一次China GT比赛历程
- 荣耀笔记本pro linux版本,荣耀MagicBook Pro锐龙版发布:首发锐龙7 3750H、还有Linux版...
- 4g全网通SMD贴片内置天线怎么选择?
- Coinversation 的选择!一文了解 Polkadot 生态中的智能合约
- 小天才z6官方禁用怎么关闭_我告诉你小天才z6隐藏功能
- Linux—系统关机命令详解
- 人工蜂群算法(ABC算法)Java实现