谈谈 爬虫遇到的 Access denied Error code 1020

news/2024/7/19 8:40:39 标签: 爬虫, python, 开发语言

这几天在练习爬虫的时候,遇到一个问题,
通过 python 代码从站点中拿到了目标图片的 url ,
但是,在持久化到本地时,出现了错误,所有保存下来的图片都报错:文件损坏,
而且,将图片 url 直接放到浏览器里,就会出现

Access denied Error code 1020

页面,

在这里插入图片描述看到这里,就严重的说明,你的目标地址正确,但却没有得到你想要的页面,这就是妥妥的 反盗链。
解决方法很简单,在 headers 里带上指定的 referer ,就能解决问题。

不过,新的问题又出现了,
我定义了两个变量,urlheaders ,并做了相应的配置,
使用 requests 模块的代码如下:

Response=requests.get(url,headers)

但是,在代码执行后,仍是出现了之前图片不能正常显示报文件损坏的错误,
奇了怪了,明明 在 headers 里有指明 referer ,但为什么还是被 反盗链 给收拾了。
百思不得其解,整整上网查了 10 多天,也没找到个所以然,
最后,还是请教了老师才将问题解决,

这里打个“小广告”,我老师往pypi库里在很多年前写过一个自动 fake 一个 user_agent 的模块,让代码变得非常的简洁,省事好用,推荐给大家。

1、 pip install kuser-agent 2、 import kuser_agent 3、 heads={‘user-agent’:kuser_agent.get()}

老师给的代码,如下:

Response=requests.get(url=url,headers=headers)

没错,就差在,参数的书写格式上了,
再和我的代码比较一下,

Response=requests.get(url,headers)

所以,以后的代码一定要按找规范书写,避免不必要的错误和干扰。

march the 05th 2023 Sunday,


http://www.niftyadmin.cn/n/122882.html

相关文章

Django的DRF从入门到精通

第一讲:建立纯净版Django项目 ① 创建Django项目 ② 创建app一个 python manage.py startapp APP名字 ③ 在settings里配置rest_framework,把不需要的全部注释掉 INSTALLED_APPS = [# django.contrib.admin,# django.contrib.auth,# django.contrib.contenttypes,# djang

初探富文本之CRDT协同实例

初探富文本之CRDT协同实例 在前边初探富文本之CRDT协同算法一文中我们探讨了为什么需要协同、分布式的最终一致性理论、偏序集与半格的概念、为什么需要有偏序关系、如何通过数据结构避免冲突、分布式系统如何进行同步调度等等,这些属于完成协同所需要了解的基础知…

Spring Boot实现文件上传和下载

实现Spring Boot文件上传和下载的步骤: 1.文件上传 在pom.xml文件中添加依赖:spring-boot-starter-web和spring-boot-starter-thymeleaf。创建一个上传前端的页面,包括一个表单来选择文件和一个提交按钮。在Controller中添加一个POST方法&a…

Git学习入门(2)- 基本命令操作总结

个人博客:我的个人博客,各位大佬来玩1 创建 git仓库1.1 从现有工作目录中初始化新仓库需要到你需要用git管理的项目中输入以下命令:git init便会创建一个空的git项目,并且当前目录下会出现一个名为 .git 的目录, Git 需…

apscheduler三种定时触发方式

#第一种# date: 特定的时间点触发# 2019-01-01 00:00:00 准时执行# import time # from apscheduler.schedulers.blocking import BlockingScheduler # # def my_job(): # print(time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(time.time()))) # sched BlockingSchedu…

vue 监听 取消监听

vue 的 watch 除了可以使用声明式的配置项以外,还可以通过命令式 this.$watch 方法。 如下是我们比较少用的命令式(想要初始只监听一次,必须命令式写法): 监听只运行一次 声明式 export default{data: {showType: fa…

【Java】Spring Boot整合WebSocket

【Java】Spring Boot整合WebSocket WebSocket简介 WebSocket是一种协议,用于实现客户端和服务器之间的双向通信。它可以在单个TCP连接上提供全双工通信,避免了HTTP协议中的请求-响应模式,从而实现更高效的数据交换。WebSocket协议最初由HTM…

【并发编程二十一:终章】c++20协程( co_yield、co_return、co_await )

【并发编程二十一】c20协程(co_yield、co_return、co_await )一、协程分类1、控制机制划分2、有栈(stackfull)/无栈(stackless)划分二、c20协程三、co_yield1、demo2、相关知识点介绍四、co_return五、co_await一、协程分类 上一篇我们讲解了…