python网络爬虫实战教学——requests的使用(1)

news2024/11/15 6:48:12

在这里插入图片描述

文章目录

  • 专栏导读
  • 1、前言
  • 2、get请求
  • 3、抓取网页
  • 4、抓取二进制数据
  • 5、请求头

专栏导读

✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。

本文录入于《python网络爬虫实战教学》,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。
订阅后,可以阅读《python网络爬虫实战教学》中全部文章内容,包含python基础语法、数据结构和文件操作,科学计算,实现文件内容操作,实现数据可视化等等。
✍ 其他专栏:《数据分析案例》 ,《机器学习案例》

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

1、前言

我们了解了urllib库的基本用法,其中确实有不方便的地方,例如处理网页验证和Cookie时,需要写Opener类和Handler类来处理。另外实现POST、PUT等请求时的写法也不太方便。
为了更加方便地实现这些操作,产生了更为强大的库—requests。有了它,Cookie、登录验证、代理设置等操作都不是事儿。

接下来,让我们领略一下requests库的强大之处吧。

2、get请求

HTTP中最常见的请求之一就是GET请求,首先来详细了解一下利用requests库构建GET请求的方法。
下面构建一个最简单的GET请求,请求的链接为https://www.baidu.com/,该网站会判断客户
端发起的是否为GET请求,如果是,那么它将返回相应的请求信息:

import requests
res = requests.get("https://www.baidu.com/")
print(res.text)

运行结果如下:
在这里插入图片描述

可以发现,我们成功发起了GET请求,返回结果中包含请求头、URL、IP等信息。

3、抓取网页

我们以一个实例页面https://ssrl.scrape.center/作为演示,往里面加入一点提取信息的逻辑,将代码完善成如下的样子:

import requests
import re
r =requests.get('https://ssr1.scrape.center/')
pattern = re.compile(r'<h2.*?>(.*?)</h2>',re.S)  
titles =re.findall(pattern,r.text)
print(titles)

运行结果如下:

['霸王别姬 - Farewell My Concubine', '这个杀手不太冷 - Léon', '肖申克的救赎 - The Shawshank Redemption',
 '泰坦尼克号 - Titanic', '罗马假日 - Roman Holiday', '唐伯虎点秋香 - Flirting Scholar', 
 '乱世佳人 - Gone with the Wind', '喜剧之王 - The King of Comedy',
  '楚门的世界 - The Truman Show', '狮子王 - The Lion King']

这个例子中,我们用最基础的正则表达式来匹配所有的标题内容。关于正则表达式,后面会详细介绍,这里其只作为实例来配合讲解。
我们发现,这里成功提取出了所有电影标题,只需一个最基本的抓取和提取流程就完成了。

4、抓取二进制数据

在上面的例子中,我们抓取的是网站的一个页面,实际上它返回的是一个HTML文档。要是想抓取图片、音频、视频等文件,应该怎么办呢?
图片、音频、视频这些文件本质上都是由二进制码组成的,由于有特定的保存格式和对应的解析方式,我们才可以看到这些形形色色的多媒体。所以,要想抓取它们,就必须拿到它们的二进制数据。

下面以示例网站的站点图标为例来看一下:

import requests
r=requests.get('https://scrape.center/favicon.ico')
print(r.text)
print(r.content)

这里抓取的内容是站点图标,也就是浏览器中每一个标签上显示的小图标

上述实例将会打印Response对象的两个属性,一个是text,另一个是content。
下图分别是r.text和r.content的结果。

在这里插入图片描述

在这里插入图片描述

可以注意到,r.text中出现了乱码,r.content的前面带有一个b,代表这是bytes类型的数据。由于图片是二进制数据,所以前者在打印时会转化为str类型,也就是图片直接转化为字符串,理所当然会出现乱码。

上面的运行结果我们并不能看懂,它实际上是图片的二进制数据。不过没关系,我们将刚才提取到的信息保存下来就好了,代码如下:

import requests
r =requests.get('https://scrape.center/favicon.ico')
with open('favicon.ico','wb')as f:
    f.write(r.content)

这样,我们就把二进制数据成功保存成了一张图片,这个小图标被我们成功爬取下来了。
在这里插入图片描述

5、请求头

我们知道,在发起HTTP请求的时候,会有一个请求头Request Headers,那么怎么设置这个请求头呢?
很简单,使用headers参数就可以完成了。

在刚才的实例中,实际上是没有设置请求头信息的,这样的话,某些网站会发现这并不是一个由正常浏览器发起的请求,于是可能会返回异常结果,导致网页抓取失败。

要添加请求头信息,例如这里我们想添加一个User-Agent字段,就可以这么写:

import requests
headers ={
    'User-Agent':'Mozllla/5.0(Nacintosh;Intel Nac OS X 10_11_4)AppleWebKit/537.36(KHTML,like Gecko)Chrome/52.0.2743.116 Safari/537.36'
}
r=requests.get('https://ssr1.scrape.center/',headers=headers)
print(r.text)

当然,可以在这个headers参数中添加任意其他字段信息。

📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

11 html 学习/作业

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><a href"./index.html">首页</a><a href"https://www.baidu.com/">百度</a><a h…

asp.net mvc 重新引导视图路径,改变视图路径

asp.net mvc 重新引导视图路径&#xff0c;改变视图路径 使用指定的控制器上下文和母版视图名称来查找指定的视图 通过本文学习&#xff0c;你可以根据该技法&#xff0c;去实现&#xff0c;站点自定义皮肤&#xff0c;手机站和电脑站&#xff0c;其他设备站点&#xff0c;在不…

【复杂网络建模】——建模工具Matlab入门

目录 一、认识MATLAB 二、认识工具箱 三、基本操作和函数 3.1 算术操作符 3.2 数学函数 3.3 矩阵操作 3.4 索引和切片 3.5 逻辑操作 3.6 控制流程 3.7 数据输入输出 四、变量和数据类型 4.1 数值类型 4.2 整型 4.3 复数 4.4 字符串 4.5 逻辑类型 4.6 结构体&a…

【合合TextIn】深度解析智能文档处理技术与应用

目录 一、智能文档处理介绍 二、文档格式解析 三、图像增强技术解析 四、传统文字识别OCR技术解析 五、深度学习OCR技术解析 六、深度学习版面分析技术解析 七、文档分类 八、信息抽取 九、系统集成&#xff1a;将IDP处理后的数据集成到企业系统 结论 一、智能文档处…

Midjourney订阅攻略/Midjourney的基本参数和命令

AI绘画软件Midjourney使用原理 Midjourney是一个由Midjourney研究实验室开发的先进的人工智能程序&#xff0c;它可以根据用户的文本输入生成精美的图像。Midjourney的主要原理是通过收集大量已有的作品数据&#xff0c;对这些数据进行算法解析&#xff0c;它就可以通过关键词生…

#Linux(连接档概念)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;硬链接&#xff08;inode&#xff0c;建立硬链接的文件inode号相同&#xff09; &#xff08;2&#xff09;创建硬链接:ln 文件名1 文件名…

天地一体化5G网络中LNA的辐射效应

Youssouf A S, Habaebi M H, Hasbullah N F. The radiation effect on low noise amplifier implemented in the space-aerial–terrestrial integrated 5G networks[J]. IEEE Access, 2021, 9: 46641-46651. 图2 面向卫星的5G综合网络架构方案 这篇论文《The Radiation Effect…

在线教育资源管理系统|基于JSP技术+ Mysql+Java的在线教育资源管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

Vue+jquery+jquery.maphilight实现图片热区高亮以及点击效果

//鼠标悬浮效果 mounted() {this.setCurrentTask(0); //对于id为mapAll的热区图&#xff0c;设置鼠标放置在上面有一个颜色 fillColor填充颜色 strokeColor边框颜色 strokeWidth边框宽度 fillOpacity 是设置热区填充颜色的不透明度的属性。 alwaysOn:true 保持常量$(function(…

txt、pdf等文件转为一行一行的doccano数据集输入格式

文章目录 doccano 数据集导入简介代码实现代码运行结果代码公开 doccano 数据集导入 在Doccano 导入数据集时&#xff0c;使用TextLine的文件格式&#xff0c;导入的文件需要为一行一行文本的数据格式&#xff0c;每一行文本在导入Doccano后就是一条数据。 简介 主要工作说明…

【图像分类】基于深度学习的杂草类型识别(9种类别,ResNet网络)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内,不想订阅专栏的兄弟们可以私信…

27-4 文件上传漏洞 - 黑名单绕过

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、黑名单绕过和黑白名单机制: 黑名单:黑名单中的文件不允许通过。白名单:白名单中的文件允许通过。二、黑白名单判断: 当输入一串后缀如"sfahkfhakj"时,黑名单不…

26 OpenCV 查找边缘

文章目录 findContours 发现边缘drawContours 绘制边缘大致流程示例 findContours 发现边缘 cv::findContours( InputOutputArray binImg, // 输入图像&#xff0c;非0的像素被看成1,0的像素值保持不变&#xff0c;8-bitOutputArrayOfArrays contours,// 全部发现的轮廓对象…

Linux服务器免密登录配置

假如有如下三台服务器&#xff1a; 192.168.32.101&#xff0c;192.168.32.102&#xff0c;192.168.32.103 第一步&#xff1a;每一台机器都执行如下命令&#xff0c;生成密钥文件&#xff0c;一路回车到底即可第二步&#xff1a;每一台机器都执行如下命令&#xff0c;设置主…

线程池实现“线程复用”的原理

线程池实现“线程复用”的原理 学习线程复用的原理&#xff0c;以及对线程池的 execute 这个非常重要的方法进行源码解析。 线程复用原理 我们知道线程池会使用固定数量或可变数量的线程来执行任务&#xff0c;但无论是固定数量或可变数量的线程&#xff0c;其线程数量都远远…

k8s-kubectl命令详解、Pod创建过程、Pod的生命周期、定制Pod、资源对象文件

集群管理 一、如何管理集群 kubectl是用于管理Kubernetes集群的命令行工具 二、语法格式&#xff1a; kubectl [command] [TYPE] [NAME] [flags] command&#xff1a;子命令&#xff0c;如create&#xff0c;get&#xff0c;describe&#xff0c;delete type&#xff1a;…

拼多多2023年实现营收2476亿 助力品质好物与消费升级双向奔赴

拼多多集团近日发布了截至去年12月31日的财务业绩报告&#xff0c;拼多多在2023年第四季度实现了889亿元的营收&#xff0c;同比增长了惊人的123%。而在全年范围内&#xff0c;拼多多的营收更是高达2476亿元&#xff0c;同比增长了90%。 去年是拼多多全面拥抱高质量发展的元年…

流水灯的实现

#include<reg51.h> //点亮一个LED灯&#xff0c;并使其闪烁 sbit LED0P2^0; void delay(int n) {int i;for(i0;i<n;i); } void main() {while(1){LED00; //亮delay(6000);LED01;delay(6000);} } #include<reg51.h> //实现流水灯 void delay(int n) {int i;fo…

Jenkins安装 Linux 更换镜像 安装插件

Jenkins安装 Linux 更换镜像 安装插件 前言 下面叙述了三种jenkins安装的方式,jenkins安装之前必须有java环境因为他是java写的… yum安装只能安装最新版本的jenkins,但是jenkins是java写的所以他强依赖java版本,当你的服务器的java版本与jenkins版本冲突时还需要给jenkins重…

学浪视频怎么保存到本地

现在随着知识付费的兴起&#xff0c;抖音也下场做知识付费&#xff0c;做了一个学浪平台&#xff0c;可是它却不提供下载按钮&#xff0c;但我们又需要把学浪视频保存到本地 这里就教大家如何将学浪视频保存到本地 由于有些小白不懂技术&#xff0c;他只想下载下来视频&#…