爬虫如何应对网站的反爬机制?如何查找user-agent对应的值

import requestsurl = 'https://movie.douban.com/top250'
response = requests.get(url)
# 查看结果
print(response)

在这里插入图片描述

  在requests使用一文中我们有讲到,当状态码不是200时表示爬虫不可用,也就是说我们获取不到网页源代码。但是我们还是可以挣扎一下,不是说不可用就放弃了。爬虫时经常会遇到有些网站有反爬机制,为了能够请求成功该如何操作?那当然是把我们伪装成浏览器了!

  那么如何把自己伪装成浏览器代替我们发送请求呢?pycharm有个字典Headers,我们需要在浏览器中找到键User-Agent对应的值

User-Agent:对应的值包含了浏览器、操作系统的各项信息。如果没有User-Agent,就相当于赤裸裸的去访问对方服务器,只要对方有反爬虫机制,就能发现你是爬虫。

在浏览器中打开想要爬取的网站,右键 --> 检查然后如下图操作:

在这里插入图片描述

  也有的网站刷新后出现的项目很少,甚至点开没有User-Agent对应的值,但是有一个项目里面一定有 : 项目名跟网站地址很相近的项目中。例如在本例中名为www.zhihu.com的项目里一定含有。

  在以贝壳租房为例,打开网页后,右键 --> 检查,在项目名为zufang中一定含有User-Agent对应的值

在这里插入图片描述

获取键user-agent对应的值后,我们把键与值写入字典Headers中

import requests# 1. 浏览器伪装
url = 'https://movie.douban.com/top250'
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}
# 获取响应结果
response = requests.get(url, headers=headers)
# 查看状态码
print(response.status_code)  # 200
# 获取网页源代码
# print(response.text)

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

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

相关文章

一文秒懂HTTP协议到底是什么?原理?

目录 1.什么是http协议? 2.http协议的版本? 3.http文本框架 4.http请求报文 5.http报文格式 6.http响应报文 7.HTTP的状态码 8.HTTP首部介绍 9.什么是URL和URI? 10.CGI是什么? 1.什么是http协议? http&#…

测试架构师如何落地性能测试方案(一)

背景描述: 最近刚接手一个新项目,在最开始的时候要求对这个项目做性能测试,产品经理也给不出性能需求,只因为这个项目是电商项目,可能会有高并发,秒杀的场景,所以产品经理要求我们对这个项目必…

vue3父子组件传值;vue3子组件传值给父组件;vue3子组件监听父组件接口传值;父子组件事件调用

代码在文末,均可直接复制使用 本文主要描述,父子组件传值、调用等问题 文章目录 问题1:子组件接收不到父组件传值问题2:子组件接受的值,修改后,发现父组件值也改变了问题3:子组件接受值&#xf…

07-HDFS入门及shell命令

1 文件系统 是一种存储和组织数据的方法,它使得文件访问和查询变得容易使得文件和树形目录的抽象逻辑概念代替了磁盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据底层存在硬盘哪里,只需记住这个文件的所属目录和文件…

STM32基于CubeIDE和HAL库 基础入门学习笔记:物联网项目开发流程和思路

文章目录: 第一部分:项目开始前的计划与准备 1.项目策划和开发规范 1.1 项目要求文档 1.2 技术实现文档 1.3 开发规范 2.创建项目工程与日志 第二部分:调通硬件电路与驱动程序 第三部分:编写最基础的应用程序 第四部分&…

opencv带GStreamer之Windows编译

目录 1、下载GStreamer和安装2. GSTReamer CMake配置3. 验证是否配置成功 1、下载GStreamer和安装 下载地址如下: gstreamer-1.0-msvc-x86_64-1.18.2.msi gstreamer-1.0-devel-msvc-x86_64-1.18.2.msi 安装目录无要求,主要是安装完设置环境变量 xxx\1…

【css】渐变

渐变是设置一种颜色或者多种颜色之间的过度变化。 两种渐变类型: 线性渐变(向下/向上/向左/向右/对角线) 径向渐变(由其中心定义) 1、线性渐变 语法:background-image: linear-gradient(direction, co…

一图搞懂二层交换机、三层交换机和路由器的区别

二层交换机、三层交换机、路由器的区别 二层交换机、三层交换机、路由器对比二层交换机三层交换机路由器工作在第几层数据链路层(第二层)网络层(第三层)网络层(第三层)功能学习和转发帧根据IP地址转发数据…

数据链路层是什么?

数据链路层承接上层的数据,然后使用下层提供的信道,按照一定的规则,进行数据传输。 物理层提供了传输媒体与连接(信道)(数据链路层使用的信道通常是物理层提供的信道),即提供了比特…

webpack自动注册全局组件

例如,在form文件夹下有许多流程类表单,一个一个注册引入非常浪费时间,可使用webpack的require.context方法来自动导入 import { firstToUpper } from /utils/methodsconst taskTable {install: vue > {const req require.context(../fo…

springboot结合element-ui实现增删改查,附前端完整代码

实现功能 前端完整代码 后端接口 登录,注册,查询所有用户,根据用户名模糊查询,添加用户,更新用户,删除用户 前端 注册,登录,退出,用户增删改查,导航栏&#…

Android Sutdio 导入libs文件夹下的jar包没反应

有点离谱,笨笨的脑子才犯的错误 首先发现问题:转移项目的时候 直接复制粘贴libs文件夹下的jar包到新项目,在build.gradle文件下 使用语句并应用也没反应(jar包没有出现箭头且代码报错,找不到) implementa…

什么样的 PLC 可以算是高端 PLC?

针对问题本身,有的回答里都提到了。可靠性,扫描时间,带离散量点数,带模拟量输出点数,扩展性,这些都可以看作PLC系统级别划分的依据。比如说,有相应安全完整性等级认证的LOGIC SOLVER为核心的PLC…

SpringBoot复习:(37)自定义ErrorController

所有接口统一返回的数据格式 package cn.edu.tju.domain;public class MyResponse {private int code;private String message;private String exception;private String stack;public int getCode() {return code;}public void setCode(int code) {this.code code;}public S…

五个独特且有趣的ChatGPT指令

今天分享5个很实用的指令,这几个指令很多时候对我们输出内容的连贯性、文章风格、创意性等方面有着决定性的作用。 目录 第一个:Max tokens(最大令牌) 第二个:Top_p(控制采样) 第三个:Presence_penalty …

Android Studio System.out.println()中文乱码

第一步: 打开studio64.exe.vmoptions加入-Dfile.encodingUTF-8 第二步: File-Settings-Editor-File Encodings 把所有的编码格式改为UTF-8 尝试跑一下代码,如果还不行,重启IDE 再试试。

UI美工设计岗位的工作职责

UI美工设计岗位的工作职责1 职责: 1、负责软件界面的美术设计、创意工作和制作工作; 2、根据各种相关软件的用户群,提出构思新颖、有高度吸引力的创意设计; 3、对页面进行优化,使用户操作更趋于人性化; 4、维护现有的应用产品; 5、收集和…

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践 文本匹配多用于计算两个文本之间的相似度,该示例会基于 ESimCSE 实现一个无监督的文本匹配模型的训练流程。文本匹配多用于计算两段「自然文本」之间的「相似度」。 例如…

一百五十三、Kettle——Linux上安装的kettle9.3启动后说缺少libwebkitgtk-1.0(真是坑爹啊,刚龟速下载又忍痛卸载)

一、问题 在kettle9.3可以在本地连接hive312后,在Linux中安装了kettle9.3,结果启动时报错WARNING: no libwebkitgtk-1.0 detected, some features will be unavailable 而且如果直接下载libwebkitgtk的话也没有用 [roothurys22 data-integration]# yu…

Python学习笔记第五十六(Pandas JSON)

Python学习笔记第五十六天 Pandas JSONread_json()to_string()字典转为 DataFrame 数据 内嵌的 JSON 数据json_normalize() 后记 Pandas JSON JSON(JavaScript Object Notation,JavaScript 对象表示法),是存储和交换文本信息的语…