使用网络爬虫爬取豆瓣电影网站的数据

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:机器学习

🅰

请添加图片描述


文章目录

    • 🅰
    • 前言
    • 🎶 一、网络爬虫概述
    • 🎶 二、requests库
      • 1.发送HTTP请求
      • 2.获取HTTP响应的内容
        • 结束语🥇


前言

   在当今这个数据大爆炸的信息时代,海量的互联网数据蕴含着巨大的价值,用户如何自动高效地从互联网中获取感兴趣的信息是一个亟待解决的问题。在这样的环境和需求的影响下,网络爬虫应运而生,它为互联网数据的采集提供了新的方法。本项目将介绍使用Python编写网络爬虫的方法。
   豆瓣用户可对豆瓣电影中“看过”的电影进行“很差”到“力荐”评价,豆瓣会根据每部影片看过的人数及该影片所得的评价等综合数据,通过算法分析产生豆瓣电影Top250。本任务将带领大家编写Python程序,利用requests库,爬取豆瓣电影Top250网站的数据。


🎶 一、网络爬虫概述


  网络爬虫又称为网络蜘蛛或网络机器人,是一个用来实现自动采集网络数据的程序。如果将互联网比作一张蜘蛛网,数据便存放于蜘蛛网的各个节点,而网络爬虫就可以比作在网上爬来爬去的蜘蛛,沿着网络抓取数据。
  网络爬虫不仅能为搜索引擎采集网络信息,还可以定向采集某些网站中的特定信息,如学术网站的论文、团购网站的价格及点评、各种电商平台的商品信息、招聘信息、租房信息、微博评论等。

网络爬虫是一个自动化的程序,它的基本工作流程如图所示
在这里插入图片描述

网络爬虫的基本工作流程可分为爬取网页、解析网页和存储数据3个步骤。
  (1)爬取网页:发送构造的HTTP请求,获取包含所需数据的HTTP响应(即网页源代码)。Python提供的爬取网页的库有urllib、requests、selenium等。
  (2)解析网页:根据网页结构,分析HTTP响应的内容,从中提取想要的数据。Python提供的解析网页的库有re(正则表达式)、lxml、beautifulsoup4等。
  (3)存储数据:将提取的数据保存起来以便后续使用。保存数据的方式有很多种,可以将其简单保存到JSON、CSV或TXT文件中,也可以保存到数据库中,如MySQL和MongoDB等。


🎶 二、requests库


  Python的标准库urllib提供了大部分HTTP功能,但使用起来较烦琐。而requests库是对urllib库的进一步封装,使用更加便捷。它的最大优点是,程序编写过程更接近正常的URL访问过程。但requests库不是Python内置的标准库,使用前需要安装。

【温馨提示】:统一资源定位符(uniform resource locator,URL)是对可以从互联网上得到的资源位置和访问方法的一种简洁表示,是互联网上标准资源的地址。

  requests库提供了很多功能特性,几乎涵盖了所有Web服务的需求,包括URL获取、HTTP长连接和连接缓存、HTTP会话、浏览器式的SSL验证、身份认证、Cookie会话、文件分块上传、流下载、HTTP(S)代理功能、连接超时处理等。有关requests库的更多介绍可访问http://docs.python-requests.org/。下面着重介绍使用requests库实现发送HTTP请求和获取HTTP响应的方法。

1.发送HTTP请求

  requests库提供了几乎所有的HTTP请求方法,包括GET、POST、HEAD、PUT、DELETE、CONNECT、OPTIONS和TRACE等。其中,最常用的是GET方法和POST方法。平时打开网站一般使用的是GET方法,也就是请求页面,该方法通过get()函数实现,其函数原型如下。

get(url, params=None, **kwargs)

(1)url:请求的URL,这是必传参数,其他都是可选参数。
(2)params:字典或字节序列,作为参数增加到url中。
(3)**kwargs:控制访问的参数,如headers、cookies、timeout和proxies等。

2.获取HTTP响应的内容

   使用请求方法发送HTTP请求后,返回一个Response类型的对象,其提供的属性和方法如表所示。
在这里插入图片描述

【例11】 爬取在豆瓣网站中搜索“Python”的内容,输出响应的内容。
【问题分析】 在爬取网页的内容前,可以先查看和分析网页的HTTP请求和响应,获取构造请求的信息和响应的内容。使用Google Chrome浏览器打开豆瓣网站搜索“Python”,查看HTTP请求和响应的过程如下。
打开Google Chrome浏览器,访问https://www.douban.com/。右击页面空白处,在弹出的快捷菜单中选择“检查”选项,打开浏览器的开发者工具窗口,然后选择“Network”选项。在打开的豆瓣网站中搜索“Python”关键词,即可在开发者工具窗口中显示请求记录(见图),其中每一条记录都代表一次发送请求和接收响应的过程。
在这里插入图片描述

在记录列表中,选择“search?q=python”选项,然后在其右侧打开的界面中选“Headers”选项,即可显示HTTP请求和响应的详细信息,如图所示。
在这里插入图片描述
   完成本案例,可首先定义字符串url,赋值为https://www.douban.com/search,定义字典paramsvalue,赋值为{‘q’: ‘Python’};然后使用get()函数发送HTTP请求,参数为url和paramsvalue,输出响应状态码和请求头;然后定义字典headersvalue设置User-Agent信息,再使用get()函数发送HTTP请求,参数为url、paramsvalue和headersvalue,并输出响应状态码、请求头和文本类型的响应内容。
【运行代码】

import requests					#导入requests库
paramsvalue = {'q': 'Python'}			#定义字典
#将paramsvalue作为参数增加到url中并发送请求,将响应赋值给r
r = requests.get('https://www.douban.com/search',
                 params=paramsvalue)
print(r.status_code)				#输出响应状态码
print(r.request.headers)				#输出请求头
#定义请求头信息
headersvalue = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36',
}
#发送HTTP请求,并将响应赋值给r
r = requests.get('https://www.douban.com/search',
                  params=paramsvalue, headers=headersvalue)
print(r.status_code)				#输出响应状态码
print(r.request.headers)				#输出请求头
print(r.text)					#输出文本类型的响应内容

【运行结果】 程序运行结果如图所示
在这里插入图片描述

从图可以看出,例1第一次发送HTTP请求时,请求头中的User_Agent信息为Python的requests库的版本信息,表示爬虫程序发送该请求,且响应状态码是418,表示禁止爬虫程序爬取该网站;而第二次设置为浏览器信息,响应状态码为200,表示伪装成浏览器后成功爬取网站。所以,设置请求头参数是应对反爬虫机制的一种有效方法。

使用Google Chrome浏览器打开豆瓣电影Top250网站(网址https://movie.douban.com/top250),可以看到每一页只显示25个电影,如果想要获取所有的电影(250个),需要获取总共10页的内容。10个网页的地址如下。
https://movie.douban.com/top250
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=50&filter=
...
https://movie.douban.com/top250?start=220&filter=
https://movie.douban.com/top250?start=225&filter=
通过分析发现,每翻一页,网页地址中的start参数会加上25。
完成本任务,须循环10次。在循环中,首先定义url字符串;然后发送HTTP请求,并输出响应状态码和请求的URL;最后将响应内容保存到TXT文件中。

结束语🥇

以上就是机器学习
持续更新机器学习教程,欢迎大家订阅系列专栏🔥机器学习
你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896938.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库操作——(4)

目录 8 视图 8.1 常见的数据库对象 8.2 视图概述 8.2.1 为什么使用视图? 8.2.2 视图的理解 8.3 创建视图 8.3.1 创建单表视图 8.3.2 创建多表联合视图 8.3.3 基于视图创建视图 8.4 查看视图 8.5 更新视图的数据 8.5.1 一般情况 8.6 修改、删除视图 8.…

Linux kernel 堆溢出利用方法

前言 本文还是用一道例题来讲解几种内核堆利用方法,内核堆利用手段比较多,可能会分三期左右写。进行内核堆利用前,可以先了解一下内核堆的基本概念,当然更好去找一些详细的内核堆的基础知识。 概述 Linux kernel 将内存分为 页…

数据结构_day3

目录 4.栈 stack 4.2.1 特性 练习: 4.3 链式栈 4.3.1 特性 总结: 4.栈 stack 4.2.1 特性 逻辑结构:线性结构 存储结构:顺序结构 操作:创建、入栈、出栈、判空和判满 创空: 入栈: 出栈&#xff1…

【自然语言处理】多头注意力机制 Multi-Head Attention

多头注意力(Multi-Head Attention)机制是Transformer模型中的一个关键组件,广泛用于自然语言处理任务(如机器翻译、文本生成等)以及图像处理任务。它的核心思想是通过多个不同的注意力头来捕获输入的不同特征&#xff…

虚拟现实与Facebook的结合:未来社交的全新体验

随着科技的不断发展,虚拟现实(VR)技术正在逐步改变人们的社交方式。Facebook,作为全球最大的社交媒体平台之一,积极探索如何将虚拟现实融入其社交生态系统,创造全新的用户体验。这一结合不仅影响了用户之间…

深度解析机器学习的四大核心功能:分类、回归、聚类与降维

深度解析机器学习的四大核心功能:分类、回归、聚类与降维 前言分类(Classification):预测离散标签的艺术关键算法与代码示例逻辑回归支持向量机(SVM) 回归(Regression):预…

探索秘境:如何使用智能体插件打造专属的小众旅游助手『小众旅游探险家』

文章目录 摘要引言智能体介绍和亮点展示介绍亮点展示 已发布智能体运行效果智能体创意想法创意想法创意实现路径拆解 如何制作智能体可能会遇到的几个问题快速调优指南总结未来展望 摘要 本文将详细介绍如何使用智能体平台开发一款名为“小众旅游探险家”的旅游智能体。通过这…

获取非加密邮件协议中的用户名和密码——安全风险演示

引言 在当今的数字时代,网络安全变得越来越重要。本文将演示如何通过抓包工具获取非加密邮件协议中的用户名和密码,以此说明使用非加密协议的潜在安全风险。通过这个演示,我们希望能提高读者的安全意识,促使大家采取更安全的通信方式。 注意: 本文仅用于教育目的,旨在提高安全…

【MyBatis】初识MyBatis 构建简单框架

目录 MyBatis前言搭建一个简单的MyBatis创建Maven项目引入必要依赖创建数据表结构创建User实体类创建Mapper接口Mapper层Dao层 创建MyBatis的Mapper映射文件编写测试类传统测试类JUnit测试 MyBatis 介绍:MyBatis是一款半自动的ORM持久层框架,具有较高的…

Linux下ClamAV源代码安装与使用说明

Linux下ClamAV源代码安装与使用说明 ClamAV(Clam AntiVirus)是一款开源的防病毒工具,广泛应用于Linux平台上的网络安全领域。它以其高效的性能和灵活的配置选项,成为网络安全从业人员的重要工具。ClamAV支持多线程扫描,可以自动升级病毒库,并且支持多个操作系统,包括Li…

NGINX 保护 Web 应用安全之基于 IP 地址的访问

根据客户端的 IP 地址控制访问 使用 HTTP 或 stream 访问模块控制对受保护资源的访问: location /admin/ { deny 10.0.0.1; allow 10.0.0.0/20; allow 2001:0db8::/32; deny all; } } 给定的 location 代码块允许来自 10.0.0.0/20 中的任何 IPv4 地址访问&#xf…

可视化大屏中运用3D模型,能够带来什么好处。

现在你看到的可视化大屏,大都会在中间放置一些3D模型,比如厂房、园区、设备等等,那么这些3D模型的放置的确给可视化大屏带来了不一样的视觉冲击,本文将从以下四个方面来分析这个现象。 一、可视化大屏中越来越多使用3D模型说明了…

Linux工具的使用-【git的理解和使用】【调试器gdb的使用】

目录 Linux工具的使用-031.git1.1git是什么1.2git在linux下的操作1.2.1创建git仓库1.2.2 .gitignore1.2.3 .git(本地仓库)1.2.4 add (添加)1.2.5 commit(提交)1.2.6push(推送)对两个特殊情况的处理配置免密码push 1.2.7 log(获取提交记录)1.2.8 status(获…

Java项目-基于springboot框架的逍遥大药房管理系统项目实战(附源码+文档)

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…

Linux运维篇-误操作已经做了pv的磁盘导致pv异常

目录 故障场景排错过程小结 故障场景 在对/dev/vdb1创建了pv并扩容至vg(klas)之后,不小心对/dev/vdb进行了parted操作,删除了/dev/vdb1导致pvs查看显示异常。具体过程如下所示: 正常创建pv 将创建好的pv添加到系统现有的卷组中 不小心又对…

Golang | Leetcode Golang题解之第491题非递减子序列

题目: 题解: var (temp []intans [][]int )func findSubsequences(nums []int) [][]int {ans [][]int{}dfs(0, math.MinInt32, nums)return ans }func dfs(cur, last int, nums []int) {if cur len(nums) {if len(temp) > 2 {t : make([]int, len(…

【计网】理解TCP全连接队列与tcpdump抓包

希望是火,失望是烟, 生活就是一边点火,一边冒烟。 理解TCP全连接队列与tcpdump抓包 1 TCP 全连接队列1.1 重谈listen函数1.2 初步理解全连接队列1.3 深入理解全连接队列 2 tcpdump抓包 1 TCP 全连接队列 1.1 重谈listen函数 这里我们使用…

颜色交替的最短路径

题目链接 颜色交替的最短路径 题目描述 注意 返回长度为n的数组answer,其中answer[x]是从节点0到节点x的红色边和蓝色边交替出现的最短路径的长度图中每条边为红色或者蓝色,且可能存在自环或平行边 解答思路 可以使用广度优先遍历从0开始找到其相邻…

Java.6--多态-设计模式-抽象父类-抽象方法

一、多态 1.定义--什么是多态? a.同一个父类的不同子类对象,在做同一行为的时候,有不同的表现形式,这就是多态。(总结为:一个父类下的不同子类,同一行为,不同表现形式。&#xff0…