Python爬豆瓣电影Top250,Springboot+Vue展示

本文介绍了如何使用Python的BeautifulSoup爬取豆瓣电影Top250的数据,并将其存储到MySQL数据库。接着,通过SpringBoot后端接口和Vue前端实现数据的展示和分页功能。文章详细讲解了爬虫的实现过程、正则表达式的应用以及前后端交互的步骤。
摘要由CSDN通过智能技术生成


前言

最近搞各种期末作业,决定把作业的实现思路写一下,代码放GitHub(懂的都懂)。本篇文章默认你已经有了Python,Springboot和Vue的基础了。

项目地址 连接

一、Python爬虫

简述一样爬虫的原理:我们在点开一个网页时,其实也是在向别人的服务器发请求,浏览器获取的前端代码后,解析,再展示。Python爬虫,就是用代码模拟浏览器,将获得到得前端代码进行解析,获取到网页代码中有用的信息,保存到自己的数据库,Excel表格等。Python也提供了很多种爬虫框架,例如Scrapy,BeautifulSoup 等。本次作业使用的是BeautifulSoup 。BeautifulSoup 需要写一些正则表达式。下面我们来看看如何实现:

  1. 打开豆瓣电影Top250网页,审查元素:
    在这里插入图片描述
    可以发现每一个电影的标题都是
<span class="title">电影标题</span>

这样一种形式,于是我们就可以用正则表达式:

# 片名
findTitle = re.compile(r'<span class="title">(.+)</span>')

这样一种形式去解析正则表达式的语法可以参考[连接],简单解释一下()表示标记一个子表达式的开始和结束位置,. 匹配除换行符 \n 之外的任何单字符,+表示匹配前面的子表达式一次或多次,这样我们就可以去匹配span里任意长度的字符了。
同样的原理,我们还可以去匹配其他信息,那么,下面看一下我主要匹配了那些信息:

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'(\d*)人评价')
# 找到           

# 找到影片的相关内容
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)
  1. 发送请求:
    我们看一下刚才进入的网页:
    在这里插入图片描述
    首页start=0,当翻到第二页时,start=25
    在这里插入图片描述
    简单的推理就是这个网页一页展示25个编号从0 开始 ,翻页就改变连接中start的内容就好,第二页start=25,第三页start=50,以此类推。
    于是就开始模拟浏览器请求网页了:

# 得到指定一个网页的信息
def askURL(url):
    # 用户代理表示告诉服务器 我是什么类型的
    head = {
   
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36 Edg/85.0.564.68"} #这个内容一定要添加,不然别人会认为你是一个爬虫
    req = urllib.request.Request(url, headers=head)
    html = ""
    try:
        response = urllib.request.urlopen(req)
        html = response.read().decode("utf-8")
    except urllib.error.URLError as e:
        if hasattr(e, "code"):
            print(e, "code")
        if hasattr(e, "reason"):
            print(e, "reason")
    return html
  1. 解析
    得到html代码后就根据,就根据上面定义好的正则表达式开始解析:
def getData(baseurl):
    dataList = []
    for i in range(0, 10):  # 调用获取信息的函数
        url = baseurl + str(i * 25)
        html = askURL(url)  # 保存获取到的网页源码
        #  print(html)
        # 解析网页~
        soup <
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__不想写代码__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值