Python爬⾍完整项⽬:⾖瓣电影Top250(含完整代码)
经过前⾯⼏篇⽂章的铺垫,现在我们终于可以来获取⾃⼰想要的信息了,获取⾖瓣电影Top250的电影链接,电影图⽚链接,电影名称,评分等等信息。
完整代码
# -*- coding = utf-8 -*-
# @Time : 2021-02-10 17:32
# @Author : 穆永恒
# @File : spider_1.py
# @Software: PyCharm
# 导⼊所⽤到的包
from bs4 import BeautifulSoup # ⽹页解析,获取数据
import re # 正则表达式,进⾏⽂字匹配
quest, # 指定URL,获取⽹页数据
import xlwt # 进⾏excel操作
import sqlite3 # 进⾏SQLite数据库操作
# 主函数
def main():
# 要爬取的⽹址
baseurl ="movie.douban/top250?start="
# 1.爬取⽹页
datalist = getData(baseurl)
# 3.保存数据
savepath ="⾖瓣电影Top250.xls"
saveData(datalist, savepath)
# 创建想要提取内容的正则表达式(⾮常重要)
# 影⽚链接
findLink = repile(r'<a href="(.*?)">')# 创建正则表达式对象(规则)
# 图⽚
findImgSrc = repile(r'<img.*src="(.*?)"')
# ⽚名
findTitle = repile(r'<span class="title">(.*)</span>')
# 影⽚评分
findRating = repile(r'<span class="rating_num" property="v:average">(.*)</span>')
# 评价⼈数
findJudge = repile(r'<span>(\d*)⼈评价</span>')
# 爬取⽹页
def getData(baseurl):
datalist =[]
for i in range(0,10):
n =str(i*25)# 页数
url = baseurl + n # 每⼀页的⽹址
html = askURL(url)# 访问每⼀个⽹页的内容
# 逐⼀解析数据
soup = BeautifulSoup(html,"html.parser")
# 到所要信息所在的⽹页中的位置
for item in soup.find_all('div', class_="item"):
# print(item)
data =[]# 保存⼀部电影的全部信息
item =str(item)
# 获取到影⽚的超链接
link = re.findall(findLink, item)[0]# 获取电影链接
data.append(link)# 添加电影链接
imgSrc = re.findall(findImgSrc, item)[0]# 获取图⽚链接
data.append(imgSrc)
title = re.findall(findTitle, item)# 获取电影名称
if(len(title)==2):# 区分中⽂名称和外⽂名称
data.append(title[0])
otitle = title[1].replace("/","")
data.append(otitle)
else:
data.append(title[0])
data.append(' ')# 如果没有外⽂名称则⽤空格占位,防⽌混乱
rating = re.findall(findRating, item)[0]# 获取评分
data.append(rating)
judge = re.findall(findJudge, item)[0]# 获取评价⼈数
data.append(judge)
datalist.append(data)# 将⼀步电影的所有爬取信息存⼊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/88.0.4324.150 Safari/537.36"}
request = quest.Request(url, headers=head)
html =""
try:
response = quest.urlopen(request)
html = ad().decode("utf-8")
URLError as e:
if hasattr(e,"code"):
de)
if hasattr(e,"reason"):
ason)
return html
# 保存数据有个叫什么代码的电影
def saveData(datalist, savepath):
workbook = xlwt.Workbook(encoding="utf-8")# 创建workbook对象
worksheet = workbook.add_sheet('sheet1')# 创建⼯作表
# 创建列名
col =("影⽚链接","图⽚链接","影⽚中⽂名称","影⽚外⽂名称","影⽚评分","评价⼈数")
for i in range(0,6):# 写⼊列名
worksheet.write(0, i, col[i])# 列名
for i in range(0,250):# 写⼊电影信息
print("第%d⾏"% i+1)
data = datalist[i]
for j in range(0,6):
worksheet.write(i+1, j, data[j])
# 保存⽂件
workbook.save(savepath)
if __name__ =="__main__":
# 调⽤函数
main()
print("爬取完毕!")
以上就是爬取⼀个⽹页的完整代码,当然都是最基本的内容,以后如果想⽤的话,可以直接利⽤这个模板进⾏拓展,爬取到更多我们想要的数据,当然后⾯的课程还有将数据存⼊数据库和可视化的⼀些内容,后续再慢慢学习吧!
Keep Moving! Keep Learning!
⼤家⼀起加油!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论