豆瓣数据采集
#测试
from bs4 import BeautifulSoup #网页解析
import re #正则表达式,进行文字匹配
#制定URL,获取网页数据
import xlwt #进行excel操作
import sqlite3 #进行SQLite进行存储def main():#1.爬取网页baseurl = '='datalist = getDate(baseurl)savepath = "豆瓣电影TOP250.xls"#3.保存数据saveDate(datalist,savepath)askUrl(baseurl)#影片详情链接规则
findLink = repile(r'<a href="(.*?)">') #创建正则表达式对象,表示规则
#影片图片
findImg = repile(r'<img.*src="(.*?)">',re.S) #re.S让换行符包含在字符中
#影片的名称
findName = repile(r'span class="title">(.*)</span>')
#影片的评分
findRating = repile(r'<span class="rating_num" property="v:average">(.*)</span>')
#评价人数
findJudge = repile(r'<span>(d*)人评价</span>')
#影片的概括
findInq = repile(r'<span class="inq">(.*)</span>')
#影片的基础信息
findBd = repile(r'<p class="">(.*?)</p>',re.S)#爬取网页
def getDate(baseurl):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)link = re.findall(findLink,item)[0] #re库通过正则表达式查找指定的字符串data.append(link) # 添加影片链接imgSrc = re.findall(findImg, item)[0]data.append(imgSrc) # 添加影片图片name = re.findall(findName, item)if len(name) == 2 :ctitle = name[0]data.append(ctitle) # 添加中文影片名称otitle = name[1].replace('/',"") #去掉无关的字符data.append(otitle) #添加英文影片名称else:data.append(name[0]) # 添加中文影片名称data.append("") # 添加英文影片名称rating = re.findall(findRating, item)[0]data.append(rating) # 添加影片评分juage = re.findall(findJudge, item)[0]data.append(juage) # 添加影片评论人数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#2.逐一解析数据return dataList#得到指定一个URL的网页内容
def askUrl(url):head = {}#用户代理表示告诉豆瓣服务器,我们是什么类型的机器,浏览器(本质上是告诉浏览器,我们可以接收什么水平的文件内容)head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'result = quest.Request(url,headers=head)html = ""try:response = quest.urlopen(result)html = ad().decode("utf-8")# print(html)URLError as e: #报错if hasattr(e,"code"):de)if hasattr(e,"reason"):ason)return html
#保存数据
def saveDate(dataList,savepath):book = xlwt.Workbook(encoding='utf-8',style_compression=0) #创建Wworkbook对象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("成功爬取第%s条" %i)data = dataList[i]for j in range(0,8):sheet.write(i+1,j,data[j])book.save('movie.xls')if __name__ == "__main__": #当程序执行时最先执行main()print("爬取完毕 over")
本文发布于:2024-02-01 16:30:38,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170677623837956.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |