解决防爬虫机制方法(二)

最近为了完成学校的大数据的作业,老师要我们爬一个的网站,里面有还算不错的防爬机制,忙活了几天,总结出一些常见的防爬机制的应对方法,方法均来自个人实战总结,非专业爬虫角度分析

承接上一次讲的方法解决防爬虫机制方法(一)-CSDN博客

3. 学会抓包

其实这个不算是防爬虫机制的方法了,主要是网站基于异步处理,就是点击了其他种类但是url并没有跳转,标签页如图下所示:

 

一般很多网页都是基于页码或者是同页面下通过转url来进行页面跳转,如果遇到这种以上这种情况也算是防爬虫的一个小手段了吧,一般每种病都是有一个编号的,但是通过控制台无法找到一个文件包含了所有疾病对应的编号 

通过搜索对应编号只有自己的url包出现,通过点击其他类型疾病后这个包还会继续保留,

然后我的做法是通过筛选出url包获取,然后将每个种类都点击一下,这样就会抓到每个类型里面全部的包,然后通过筛选如图下所示:

通过对应的导出键就可以将所有的抓包全部导出来了

 

后面则可以通过python里的haralyzer来解析包,但是里面的url地址挺多的,自己可以通过筛选出自己想要的url地址

演示代码如下所示

import json
from haralyzer import HarParser# 用你的HAR文件路径替换下面的路径
har_file_path = 'drugs.dxy.cn.har'
# 读取HAR文件
with open(har_file_path, 'r', encoding='utf-8') as file:har_content = file.read()# 将HAR文件内容转换为字典
har_dict = json.loads(har_content)# 创建HarParser对象
har_parser = HarParser(har_dict)# 解析HAR文件
har_data = har_parser.har_data
# print(har_data)
# 获取请求列表
# print("Keys in har_data:", har_data.keys())
# Keys in har_data: dict_keys(['version', 'creator', 'pages', 'entries'])
entries = har_data['entries']
# 打印请求的详细信息
urls = []
if entries:for i in range(len(entries)):first_entry = entries[i]print("Request URL:", first_entry['request']['url'])print("Request Method:", first_entry['request']['method'])print("Response Status:", first_entry['response']['status'])print("Response Content Type:", first_entry['response']['content']['mimeType'])
else:print("No entries found in the HAR file.")
print(urls[-8])

这些方法还是比较适用于一些比较简单的爬取,如果是大佬级别或者是长时间爬取的仅供参考

希望这篇博客对你有帮助!!!!!

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

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

相关文章

OpenAI 悄然更新使用政策

据 The Intercept 报道,OpenAI 近日悄然在其使用政策中删除了「明确禁止将其技术用于军事目的」的措辞。 截至 1 月 10 日,OpenAI 的「使用政策」页面还包括禁止「具有高人身伤害风险的活动」,特别是应用于「武器开发」和「军事和战争」。 而…

Binder 机制 javanative

一:Binder介绍 Binder是一套ipc通信方案 Binder框架定义了四个角色: Server ,Client,ServiceManager (以后简称SMgr)以及Binder驱动。其中Server ,Client,SMgr运行于用户空间&#…

随心玩玩(十三)Stable Diffusion初窥门径

写在前面:时代在进步,技术在进步,赶紧跑来玩玩 文章目录 简介配置要求安装部署下载模型启动ui插件安装教程分区提示词插件Adetailer插件提示词的分步采样采样器选择采样器的收敛性UniPC采样器 高分辨率修复 (Hires. fix)图生图ControlNet介绍…

jetson nano VNC远程桌面配置及使用(nomachine)

文章目录 jetson nano VNC远程桌面配置及使用1.Nomachine介绍2.在电脑端安装Nomachine3.在Jetson Nano端安装Nomachine4.电脑端连接及使用步骤5.修改分辨率6.NoMachine常见问题6.1 黑屏6.2 白屏 jetson nano VNC远程桌面配置及使用 本节适用于Jetson Nano没有单独显示器可以给…

2023年跨国企业如何实现跨境数据传输合规化(上)

一、什么是数据跨境传输? 首先了解一个概念,什么是数据跨境传输? 数据跨境传输简单概括就是指信息通过互联网等网络媒介,在跨国企业之间进行传递和交换的过程。 有一则官方网站关于全球化数字化的数据统计:仅2019 年…

MyBatisPlus学习笔记二

接上:MyBatisPlus学习笔记一: MyBatisPlus学习笔记一-CSDN博客 1、条件构造器 MyBatisPlus支持各种复杂的where条件,可以满足日常开发的所有需求。 1.1、集成体系 1.2、实例 查询 lambda查询 更新 1.3、总结 2、自定义sql 我们可以利用MyB…

强化学习AI构建实战 - 基于“黄金点”游戏(二)

服务端接口 为了让大家的AI可以顺利地进行游戏,并验证我们对策略和AI的一些实现,我们需要一些基础设施来帮助我们完成一些工作。这些工作包括游戏回合的控制、参与者之间的数据同步、游戏数据的储存等功能。 为了简化这些基础工作,以便大家…

VM虚拟化——物理机迁移至虚拟化

一、安装迁移工具 VMware vCenter Converter Standalone 【安装向导】 【最终用户专利协议】 【最终用户许可协议】 【安装位置】 【安装类型】默认本地安装 【用户体验设置】 【准备安装】 二、迁移 【转换机器】 【源主机】 填ip、用户名和密码 最好是用administ…

什么是DDOS高防ip?DDOS高防ip是怎么防护攻击的

随着互联网的快速发展,网络安全问题日益突出,DDoS攻击和CC攻击等网络威胁对企业和网站的正常运营造成了巨大的威胁。为了解决这些问题,高防IP作为一种网络安全服务应运而生。高防IP通过实时监测和分析流量,识别和拦截恶意流量&…

PattPatel-“Introduction to Computing Systems“(4)期末样卷题目解析:C语言递归

C语言的递归我觉得最主要的还是要把Patt&Patel的部分好好理解下(因为有和硬件结合的部分),但因为今天就考试(来不及做这样的事情),先把之前模拟卷的题目给尝试弄明白,然后考完试之后继续学习…

vue-ESlint代码规范及修复

1. 介绍 ESLint:是一个代码检查工具,用来检查你的代码是否符合指定的规则(你和你的团队可以自行约定一套规则)。 在创建项目时,我们使用的是 JavaScript Standard Style 代码风格的规则。 规范网址:https://standardjs.com/rules-zhcn.htm…

力扣-刷MySQL(详细解析)

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误&am…

uniApp 顶部导航栏右侧添加文字按钮

{"path" : "pages/allin/MessageCenter/MessageCenter","style" : {"navigationBarTitleText": "消息中心","enablePullDownRef…

如何在Eclipse IDE中安装TestNG插件

目录 使用Eclipse Marketplace安装TestNG插件 通过输入URL安装TestNG 1.点击安装新软件 2.输入URL以安装TestNG 3.遵循正常的安装过程 4.重新启动Eclipse 在Eclipse中安装TestNG插件的视频 在这篇文章中,我们将介绍如何在Eclipse IDE中安装TestNG插件&#x…

JVM-Arthas高效的监控工具

一、arthas介绍 3.选择监控哪个进程 4.进入具体进程 二、arthas的基础命令与基本操作 1.查询包含Java的系统属性: 命令:sysprop |grep java 1.查询不含Java的系统属性: 命令:sysprop | grep -v java 3.打印历史命令 命令&#…

C语言从入门到实战——结构体与位段

结构体与位段 前言一、结构体类型的声明1.1 结构体1.1.1 结构的声明1.1.2 结构体变量的创建和初始化 1.2 结构的特殊声明1.3 结构的自引用 二、 结构体内存对齐2.1 对齐规则2.2 为什么存在内存对齐2.3 修改默认对齐数 三、结构体传参四、 结构体实现位段4.1 什么是位段4.2 位段…

基于springboot的流浪动物救助管理系统

🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅一 、设计说明 1.1研究背景 随着…

windows平台高dpi介绍

flutter在windows平台如何自定义dpi设置 系统层级的支持(windows平台对高dpi的支持) 主要有两点: 设置系统的缩放比例 (系统及系统自带的app会根据这个设置来进行缩放;自己的app需要结合自己设置的dpi awareness来实现对应的dpi支持)设置进程的dpi aw…

BIOS知识枝桠——RAID 磁盘阵列

文章目录 前言一、RAID介绍二、RAID等级分类1.RAID02.RAID13.RAID24.RAID3和RAID45.RAID5和RAID66.RAID77.RAID10 BIOS下组建RAID 前言 假设存在多块磁盘,如果不组建阵列,磁盘与磁盘之间是没有任何关系的。磁盘A和B,放在A中的文件与B磁盘没有…

vue中使用component中的is渲染组件如何使用,:is 等价 v-if渲染组件。

动态组件顾名思义动态加载不同的组件&#xff0c;is属性用于加载不同组件&#xff0c;传参使用属性传递 1、使用v-for遍历component&#xff0c;组件都会执行 <componentv-for"(item, index) in TAB_PANE":key"index":is"item.componentName"…