爬虫豆瓣top250

2023-11-06

前言


随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。

一.爬虫是什么


爬虫,即网络爬虫,大家可以理解为在网络上爬行的一只蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛,如果它遇到自己的猎物(所需要的资源),那么它就会将其抓取下来。 比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。

二.爬取豆瓣的原因

在忙碌了一周后的周末,想看电影但不知道看什么,可以通过python爬取豆瓣top250上的数据,瞅瞅有哪些高分的电影,用来度过无聊的周末,而且豆瓣是新手练习爬虫的必爬网站。

三.爬虫项目步骤

1.准备工具

爬虫就只需要一个工具那就是pycharm,学生用户可以通过学生邮箱绑定免费使用专业版一年。
在这里插入图片描述

2.学习python的相关知识

没错本人就是毕业于bilibili大学( •̀ ω •́ )✧

3.爬虫过程讲析

本项目引用了re库,SQLit3库,urlib库和BeautifulSoup库
在这里插入图片描述
Re库:正则表达式,用来匹配字符串,本项目中主要用来从原网页中提取我们需要的电影图片,片名,评分,评价人数,概况,和相关信息。
在这里插入图片描述

主函数:
在这里插入图片描述
从网页中提取数据:该模块利用了BeautifulSoup库和re库。我先获取到网页源码,利用bs函数查取想要的相关信息的标签和里面包括的内容并存进一个列表里,再利用正则表达式进行查找字符串,精确提取我需要的电影信息,并通过re的增删改查功能过滤掉无用信息和无法显示的字符(“\”和空格等),最后存入data列表中。
在这里插入图片描述

在这里插入图片描述
为了防止通过豆瓣的反爬系统,我通过抓取在访问网页时,浏览器向服务器发出的请求,找到了模拟浏览器访问的header文件:“User-Agent”并且写到项目中,通过urlbil进行访问豆瓣网站,在后续调试时通过多次访问过后,被豆瓣识别出异常,出现了404forbidden,需要登录才能查看页面,所以我通过登录后用相同方法抓取到了我的cookie并且加入到我的项目文件中,最后成功进入。

在这里插入图片描述

将我提取到和最终整理到的数据存入数据库中,我用到的是SQLit数据库

在这里插入图片描述
建表
在这里插入图片描述

四.成果展示

将爬取豆瓣top250的数据储存于数据库:SQLit3
在这里插入图片描述
在这里插入图片描述
用flask框架和网站模板制作了一个网页
在这里插入图片描述
在这里插入图片描述
用JavaScript脚本将爬取的数据可视化
在这里插入图片描述

五.代码展示

# -*- codeing = utf-8 -*-
# @Time : 21/11/2021 下午3:22
# @Author : lx
# @File : spider.py
# @Software: PyCharm
import re
import sqlite3
import urllib.request
from bs4 import BeautifulSoup
import xlwt

# 视频链接
findLink = re.compile(r'<a href="(.*?)">')
# 图片
findImgSrc = re.compile(r'<img.*src="(.*?)"', re.S)
# 片名
findTitlle = 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 main():
    baseurl = "https://movie.douban.com/top250?start="
    datalist = getData(baseurl)
    dbpath = "movie.db"
    saveData2DB(datalist, dbpath)



#爬取网页
def getData(baseurl):
    datalist = []
    for i in range(0,10):
        url = baseurl + str(i*25)
        html = askURL(url)#保存获取到的网页原码

        #逐一解析
        soup = BeautifulSoup(html,"html.parser")
        
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬虫豆瓣top250 的相关文章

随机推荐

  • linux中编译tslib1.4出错:./autogen.sh: 4: autoreconf: not found

    autogen sh 4 autoreconf not found 是在不同版本的 tslib 下执行 autogen sh 产生 它们产生的原因一样 是 因为没有安装automake 工具 ubuntu 10 04 用下面的命令安装好就可
  • Java微信小程序的授权登陆

    前提 获取服务号的公众号平台 中的 开发配置 进去 获取小程序的 AppId 与 AppSevrect 登陆授权作用域分为两种 一 静默登陆 scope参数值为 snsapi base 只能获取到用户openid 好处是静默认证 无需用户手
  • Qt窗口之QMainWindow、QDialog、QWidget

    在 Qt 中 我们将窗口和控件统称为部件 Widget 窗口是指程序的整体界面 可以包含标题栏 菜单栏 工具栏 关闭按钮 最小化按钮 最大化按钮等 控件是指按钮 复选框 文本框 表格 进度条等这些组成程序的基本元素 一个程序可以有多个窗口
  • android面试-事件分发

    回答思路 首先事件是哪几个事件 视图的结构 事件分发的整个流程 事件类型 首先事件分为按下 移动 抬起 还有一个cancel 非人为的结束 视图结构 首先得有个结构模型概念 ViewGroup和View组成了一棵树形结构 最顶层为Activ
  • 中台战略-第九章、数字营销的技术架构与路径

    文章目录 第九章 数字营销的技术架构与路径 9 1基于中台架构 构建立体数字营销云 9 2 数字营销技术架构和设计理念 9 2 1 数字营销云应用介绍 1 全域会员i CDP 2 智能营销i Marketing 3 全渠道销售i Comme
  • 在线沙箱网站 在线恶意文件监测网站 病毒在线监测网站 apk分析在线网站

    沙箱 https www joesandbox com windows 沙箱 VirSCAN https www virscan org language de 只能传20M以内的文件 VirusTotal https www virust
  • 【注释模板】IDEA中JAVA类、方法注释模板教程

    文章目录 TOC 1 引言 2 JAVA创建类时注释模板配置 2 1 打开IDEA 依次点击File gt Setting 2 2 在Settings界面中依次点击Editor gt File and Code Templates 并在Fi
  • 关于示波器产生奇特波形的解释

    转发 https blog csdn net y511374875 article details 80583585
  • 让机器“看山是山”:脑启发的视觉计算

    编者按 人生之三境界的第一层 看山是山 看水是水 本质上展示了人 看见 的过程 以及思绪与理解在这一过程中所起的作用 看见 对于人类而言 似乎是一个很简单自然的事情 其实则不然 从地球上第一个长出眼睛的生物三叶虫 走到今天的人类视觉 经历了
  • office365 无法登录_office365、office2019微软账号无法登录如何解决?

    我相信很多人肯定被这个问题折磨得头大 因为微软服务器在国外的原因 所以部分设备很难登入 但是OneNote Office365 Ofice等软件如果是绑定了微软账号的 需要登入微软账号才可以激活和保存数据 日常帮助很多订阅客户处理过这个问题
  • 【数据结构】循环队列的实现(附带详细注释)

    前言 数据结构系列首页 是数据结构系列文章的首页 其中会逐步更新各种数据结构的实现 有兴趣的选手可以一看 首页中不仅有各种数据结构的实现 还有学习数据结构必备的基础知识 如果有选手觉得自己的基础不太牢固 可以先将搞定基础知识 之后再攻克数据
  • 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 -- 递归

    0 题目描述 leetcode原题链接 剑指 Offer 68 I 二叉搜索树的最近公共祖先 1 递归解法 终止条件 当 root 为空时 返回 None 当 p q 都在 root 的右子树中 则开启递归 root right 并返回 否
  • 企业大数据CDH集群安全----sentry

    Sentry安装 1 cm中选择添加服务 选择sentry 2 选择要安装sentry的主机 3 配置数据库 HDFS配置 开启启动访问控制列表 选中打勾 开启检查HDFS权限服务 开启sentry服务 hive配置 修改hive配置参数
  • 获取IronSource的广告源Pod和Maven版本

    接入IronSource库后 现在可以选择Maven或者Pod的形式导入相关广告源 Ironsource官网上有一个入口 可以方便的获取接入广告源的Maven和Pod Android https developers ironsrc com
  • Object.keys()、Object.values()、Object.entries()的用法

    一 Object keys obj 参数 要返回其枚举自身属性的对象 返回值 一个表示给定对象的所有可枚举属性的字符串数组 处理对象 返回可枚举的属性数组 let person name 张三 age 25 address 深圳 getNa
  • java参数校验常见注解介绍

    一 NotEmpty NotBlank NotNull区别介绍 NotEmpty 常用于集合 字符串等 不能为空 且长度必须大于0 NotBlank 用于字符串上 不能为空 且长度必须大于0 NotNull 字面意思 一般用于基本类型 不为
  • 聊聊编程是什么

    前言 前言不看没关系 不影响 半夜睡不着 想写点啥 浅聊下我理解的编程的 我认为编程就是解决问题 就像互联网是依附于实体业 是处理解决实际问题的 刚学编程的时候总是很恐慌的 天赋不够 我这么认为的原因 一是当时流行一种说法叫不是热爱编程的是
  • Mongodb数据库的安装部署及基本使用

    Mongodb数据库的安装部署及基本使用 一 Mongodb数据库介绍 1 Mongodb简介 2 Mongodb适用场景 3 MongoDB特性 二 检查本地系统环境 1 检查系统版本 2 检查yum仓库 三 Mongodb的安装 1 配
  • 【python开发】1. __init__.py与导包

    python开发 开始拿着github上的python代码狂啃时 发现很多知道干嘛又不知道为啥这样的代码 开始疯狂补漏 package 导包 用处1 导入包 比如这样的架构 package1 subPack1 init py module
  • 爬虫豆瓣top250

    爬虫豆瓣top250 前言 一 爬虫是什么 二 爬取豆瓣的原因 三 爬虫项目步骤 1 准备工具 2 学习python的相关知识 3 爬虫过程讲析 四 成果展示 五 代码展示 前言 随着网络的迅速发展 万维网成为大量信息的载体 如何有效地提取