项目三:学会如何使用python爬虫请求库(小白入门级)

根据上一篇文章我们学会的如何使用请求库和编写请求函数,这一次我们来学习一下爬虫常用的小技巧。

自定义Headers

Headers是请求的一部分,包含了关于请求的元信息。我们可以在requests调用中传递一个字典来自定义Headers。代码如下

import requests
headers = {
     'User-Agent': 'My Custom User Agent',
    'Accept': 'application/json',
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
}
res = requests.get(url='https://www.baidu.com/', headers=headers)
print(res.headers)

输出结果

如果输出的代码看不懂,可以看下面代码对比图片读懂代码。

这些头部信息对于开发者和网络管理员来说非常重要,因为它们提供了关于服务器响应和行为的详细信息。理解这些头部可以帮助你更好地处理HTTP请求和响应,以及优化Web应用程序的性能和安全性。

{'Accept-Ranges': 'bytes', //指示服务器支持的请求范围类型
'Cache-Control': 'no-cache', //指定了响应的缓存策略
 'Connection': 'keep-alive',  //指示连接是否应该在请求完成后保持打开状态
 'Content-Length': '227',  //响应内容的字节长度
//定义了哪些内容可以被加载到页面上,以及页面可以与哪些外部资源交互。这个头部用于提高安全性,防止跨站脚本(XSS)攻击
 'Content-Security-Policy': "frame-ancestors 'self' https://chat.baidu.com http://mirror-chat.baidu.com https://fj-chat.baidu.com https://hba-chat.baidu.com https://hbe-chat.baidu.com https://njjs-chat.baidu.com https://nj-chat.baidu.com https://hna-chat.baidu.com https://hnb-chat.baidu.com http://debug.baidu-int.com;", 
 'Content-Type': 'text/html',  //响应内容的媒体类型
 'Date': 'Mon, 15 Apr 2024 09:46:00 GMT',  //响应生成的日期和时间
 'P3p': 'CP=" OTI DSP COR IVA OUR IND COM ", CP=" OTI DSP COR IVA OUR IND COM "',  //公共隐私政策项目(P3P)的头部,用于定义网站的隐私策略
 'Pragma': 'no-cache', //与Cache-Control类似,Pragma是一个HTTP/1.0的缓存指令,no-cache表示响应不应该被缓存。
 'Server': 'BWS/1.1',  //服务器软件的名称和版本
 'Set-Cookie': 'BD_NOT_HTTPS=1; path=/; Max-Age=300, BIDUPSID=F36C5CA8D21142BD74B5207C59287DBD; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com, PSTM=1713174360; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com, BAIDUID=F36C5CA8D21142BD2FFC0E76C39C86DD:FG=1; max-age=31536000; expires=Tue, 15-Apr-25 09:46:00 GMT; domain=.baidu.com; path=/; version=1; comment=bd', //设置一个或多个Cookie,用于维持用户会话、跟踪用户行为等
 'Traceid': '1713174360037795661812152107203751720698',  //服务器为请求生成的唯一追踪ID,用于调试和日志记录
 'X-Ua-Compatible': 'IE=Edge,chrome=1',  //指示服务器支持的浏览器兼容性
 'X-Xss-Protection': '1;mode=block'} //浏览器的安全头部,用于启用XSS保护机制
自定义Cookies

Cookies通常用于维持用户的会话状态。我们可以通过cookies参数requests调用中传递一个RequestsCookieJar对象或者一个字典来自定义Cookies。代码如下

# 导入requests库
import requests
# 自定义cookies
cookies = {'cookies_are':'working'}
# 发起请求
res = requests.get(url='http://httpbin.org/cookies', cookies=cookies)
# 打印响应内容
print(res.text)

这个代码主要用来维持会话状态

输出结果

提示:自定义Cookies在爬虫中通常用于维持会话(如登录)、绕过防爬机制、跟踪用户行为、处理Cookies限制等。

重定向(allow_redirects)

在HTTP请求中,重定向是指服务器指示客户端去访问另一个URL的响应。重定向是一种常见的Web机制,用于URL变更、负载均衡、内容移动等场景

HTTP状态码中,301(Moved Permanently)、302(Found)、303(See Other)、307(Temporary Redirect)和308(Permanent Redirect)都是表示重定向的响应码

在网络请求中,我们常常会遇到状态码是3开头的重定向问题,在Requests中是默认开启允许重定向的,即遇到重定向时,会自动继续访问,这个行为由llow_redirects参数来控制。

使用allow_redirects参数的场景包括:

  • 当你知道URL已经更新,并且想要直接访问新URL时,可以禁用重定向,以获取重定向响应中的新URL。
  • 当你需要分析重定向链时,可以通过禁用重定向并检查response.history来获取所有的重定向记录。
  • 当服务器返回的重定向可能包含敏感信息或不安全的内容时,禁用重定向可以防止客户端无意中访问这些URL。

通过灵活使用allow_redirects参数,可以更好地控制requests库的行为,以适应不同的网络请求场景。

重定向是一种服务器端行为,它通过将用户的请求从一个URL重定向到另一个URL来提供更好的用户体验和管理网站内容。重定向可以有以下作用

  1. 网站更改:当网站管理员决定更改网站的URL结构或移动页面时,重定向可以确保现有的链接仍然有效,并将用户正确地引导到新的位置。

  2. 域名重定向:当网站有多个域名时,可以使用重定向将用户引导到主要域名,以确保所有流量都指向一个位置。

  3. 防止重复内容:重定向可以确保用户访问正确的标准化URL,从而避免搜索引擎索引多个相同内容的URL。

  4. 统一资源:对于移动设备和桌面设备,可以使用重定向将用户引导到适合其设备的不同版本的网站。

在网络编程中,允许重定向可以确保客户端能够跟随服务器发送的重定向指令,从而获得正确的资源。

简单代码如下

#导入requests模块
import requests
#发送请求 允许重定向
response = requests.get('http://example.com', allow_redirects=True)
#输出响应内容
print(response.url)

注意:重定向(False=关闭重定向,True=开启重定向

输出结果:

最后一行打印出了响应的URL,这对于检查是否发生了重定向是很有用的。

重定向有许多操作,这里选用一个简单的部分,能够让大家一眼看懂

禁止证书验证(verify)

在爬虫过程中,SSL证书是用于在客户端(爬虫)和服务器之间建立安全通信的重要工具。而需要SSL证书验证有以下原因:

  1. 数据加密: SSL证书确保了客户端和服务器之间的数据传输是加密的。这意味着即使数据在传输过程中被拦截,攻击者也无法轻易读取或修改数据内容。

  2. 身份验证: SSL证书还用于验证服务器的身份。当爬虫访问一个使用SSL证书的服务器时,它可以检查证书是否由受信任的证书颁发机构(CA)签发,以及证书中的信息是否与服务器声称的身份匹配。这有助于防止中间人攻击和欺诈网站。

  3. 信任和声誉: 使用有效的SSL证书可以提高网站的信誉和用户的信任度。对于爬虫来说,确保与信任的服务器通信可以提高爬取数据的质量和安全性。

  4. 遵守法规: 某些法律法规要求网站和服务必须使用SSL证书来保护用户数据。作为爬虫开发者,遵守这些法规可以避免潜在的法律问题。

  5. 浏览器和库的要求: 现代浏览器和网络库(如requests)默认要求使用SSL证书。如果没有有效的证书或证书验证失败,浏览器和库可能会拒绝连接或发出警告。

  6. 防止数据泄露: SSL证书有助于防止敏感数据(如登录凭据、个人信息等)在传输过程中被窃取。这对于爬取可能包含敏感信息的网站尤为重要。

简单案例代码

import requests

# 关闭SSL证书验证
response = requests.get('https://www.baidu.com/', verify=False)

这个代码用来关闭证书验证,通常情况下,不建议关闭,除非你信任这个网络环境,否则可能会数据泄密或者中间人攻击。大家自行验证即可😎(っ °Д °;)っ

输出结果

解释:输出的信息包含以下内容

  1. InsecureRequestWarning: 这是一个警告,由urllib3库发出,提示你的HTTPS请求没有进行证书验证。在Python 3中,如果你使用urllib3库进行HTTPS请求,而没有指定cert_reqs='CERT_REQUIRED'来启用证书验证,就会收到这个警告。这是因为没有证书验证的HTTPS请求容易受到中间人攻击(MITM),所以强烈建议启用证书验证以保证通信安全。

  2. 警告链接: 警告信息中提供了一个链接,指向urllib3的官方文档,其中详细介绍了如何处理SSL警告和如何配置证书验证。

  3. HTML内容: 这部分是百度首页的HTML源码片段。它包含了百度的登录链接、搜索框、导航链接以及其他一些页面元素。这个HTML片段可能是从网络请求的响应中提取出来的

设置超时(timeout)

超时时间应该根据目标服务器的响应速度和网络状况来合理设置。过短的超时时间可能导致不必要的超时异常,而过长的超时时间可能会导致爬虫效率降低。因此要合理设置,提高爬虫效率

import requests
# 设置超时
requests.get('https://www.baidu.com/', timeout=10)
print('ok')

输出结果

这表示爬虫没有超时,并成功响应信息。

好了今日分享到此一游,各位点个赞,关注我不迷路

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

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

相关文章

如何做一个springboot的starter类型的SDK

关键的东西 首先我们是一个starter类型的SDK,为了给调用者使用,其中有一些Bean我们会放到SDK中,并且这些Bean能够注入到调用者的Spring容器中。 最关键的spring.factories文件 这个文件所在位置如下图所示,该文件通过写入一下代…

六、新闻主题分类任务

以一段新闻报道中的文本描述内容为输入,使用模型帮助我们判断它最有可能属于哪一种类型的新闻,这是典型的文本分类问题。我们这里假定每种类型是互斥的,即文本描述有且只有一种类型,例如一篇新闻不能即是娱乐类又是财经类&#xf…

云正在使 IT 受益,但对业务却没有好处

云具有巨大的商业价值!这是云提供商及其盟友在每次云计算会议上高喊的战斗口号。 您永远不会听到我说“云”始终是正确的解决方案,或者就此而言,是错误的解决方案。 在作为云专家 20 多年的时间里,从来没有盲目追随云计算先驱或…

面试手撕合集

82.删除排序链表中的重复元素II 定义单个指针 cur,指向虚拟头节点。如果 cur.next cur.next.next,说明 cur 后面的两个节点重复,例如 节点2 后面存在 2个节点3。我们令 节点2 -> 节点4,实现删除两个节点3的操作。 class Solut…

visual studio连接ubuntu不成功原因(SSH问题)及解决办法

原因1: 网络没有互通(一般VMware) 使用ping来看网络是不是可以互通,例如: //这里的ip是ubuntu的ip,也可以从ubuntu的客户端ping一下当前主机 ping 192.168.1.101原因2: SSH没有密钥&#xf…

从iPhone恢复已删除照片的最佳软件

本文分享了从iPhone恢复已删除照片的最佳软件。如果您正在寻找如何从iPhone恢复已删除的照片,请查看这篇文章。 为什么您需要软件从iPhone恢复已删除的照片? 没有什么比丢失iPhone上的重要数据更痛苦的了,尤其是一些具有珍贵回忆的照片。有时…

❤ vue3 使用报错

❤ vue3 项目使用报错 vue3语法变动 TypeError: Assignment to constant variable (常量变量) 背景: Vue3 项目使用 TypeError: Assignment to constant variable. 原因: 因为我对const定义的常量重新赋值了 解决方法&#…

JVM(Java虚拟机)内存管理基础理论

JVM(Java虚拟机)内存管理是Java开发和性能优化中的一个核心领域。理解JVM的内存结构和管理机制对于编写高效的Java程序和进行有效的性能调优非常重要。以下是一个关于JVM内存学习的大纲,涵盖了从基础知识到高级主题的各个方面: 1.…

EasyRecovery2024专业免费的电脑数据恢复软件

EasyRecovery数据恢复软件是一款功能强大的数据恢复工具,广泛应用于各种数据丢失场景,帮助用户从不同类型的存储介质中恢复丢失或删除的文件。 该软件支持恢复的数据类型非常广泛,包括但不限于办公文档、图片、音频、视频、电子邮件以及各种…

Hive on spark源码编译与调优

文章目录 一、编译环境准备1、hadoop和hive安装2、编译环境搭建3、Hive on Spark配置 二、Hive相关问题1、Hadoop和Hive的兼容性问题1.1 问题描述1.2 解决思路1.3 修改并编译Hive源码 2、Hive插入数据StatsTask失败问题3.1 问题描述3.2 解决思路 3、Hive和Spark兼容性问题3.1 问…

信也科技网络自动化实践-网络策略管理

1、背景 随着各种法律法规和行业标准的出台和更新,企业或组织需要遵守各种安全合规性要求。网络安全策略管理需要符合这些要求,从而保障企业或组织的安全和合规性。网络安全策略管理需要涵盖企业或组织的整个网络生命周期,包括网络规划、设计…

【JavaEE多线程】线程安全、锁机制及线程间通信

目录 线程安全线程安全问题的原因 synchronized 关键字-监视器锁monitor locksynchronized的特性互斥刷新内存可重入 synchronized使用范例 volatilevolatile能保证内存可见性volatile不保证原子性synchronized 也能保证内存可见性 wait 和 notifywait()方法notify()方法notify…

[BT]BUUCTF刷题第17天(4.15)

第17天(共3题) Web [强网杯 2019]高明的黑客 .tar.gz 是 Linux 系统下的压缩包,访问即可下载 打开后有3000多个php文件,通过题解得知需要写Python脚本找出合适的GetShell文件(因为每个文件里都会通过system函数执行…

【Java开发指南 | 第九篇】访问实例变量和方法、继承、接口

专栏:Java开发指南 CSDN秋说 文章目录 访问实例变量和方法继承接口 访问实例变量和方法 通过已创建的对象来访问成员变量和成员方法,如下所示: /* 实例化对象 */ Object referenceVariable new Constructor(); /* 访问类中的变量 */ refer…

glitch功耗的问题在先进节点上更加突出

这个问题在 AI 加速器中尤为严重,修复这个问题需要一些tradeoff。 据估计,一些最先进和最复杂的芯片设计中总功耗的 20% 到 40% 被浪费了。 glitch功耗并不是一个新现象。在先进节点上,glitch功耗问题正变得越来越突出,没有一种解…

Android SQLite

一、使用SQLiteOpenHelper类创建数据库与版本管理 1、nCreate(database):首次使用软件时生成数据库表 2、onUpgrade(database,oldVersion,newVersion):在数据库的版本发生变化时会被调用, 一 般 在软件升级时才需改变版本号,而数据库的版本是由…

20240328-2-随机森林面试题RandomForest

随机森林面试题 1. 简单介绍随机森林 一种基于树模型的Bagging的优化版本,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的特点。 多次随机取样,多次随机取属性,选取最优分割点&#xff…

在Vue3中如何使用H.265视频流媒体播放器EasyPlayer.js?

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#…

【uniapp踩坑记】——微信小程序转发保存图片

关于微信小程序转发&保存图片 微信小程序图片转发保存简单说明网络图片的转发保存base64流形式图片转发保存 已经好多年没写博客了,最近使用在用uniapp开发一个移动版管理后台,记录下自己踩过的一些坑 吃相别太难看,搞一堆下头僵尸号来点…

【YOLOv9】使用yolov9训练自己的数据集/验证 /推理 /参数分析

完胜V8的SOTA模型Yolov9(论文阅读笔记)内容 点击即可跳转 当今的YOLO系列武林盟主YOLOV9: YOLOv9的优秀表现: 环境: ubuntu20.04,无GPU,使用anaconda3创建的虚拟环境yolov9。 环境安装: conda create -n …