爬虫一般怎么解决加密问题?

news2024/12/25 23:37:30

① 对于网页端来说通常加密的算法是写在 js 代码里的,所以首先你要对 js 语言有所了解。

至少知道 js 基础的内容,其次找到对应 js 加密代码,然后找出关键的函数。

把 js 代码在 node.js 环境进行调试,最后在 Python 环境下利用 execjs 库去执行调试好的代码。

② 就是模拟浏览器环境直接获取渲染后的数据,最常用的手段就是利用 Selenium 框架了。

这种方式非常便利,当然对应的缺点就是效率非常低下。不过现在有新的框架来取代 Selenium,即 Puppeteer,这个框架你可以看出是异步版的 Selenium。

对于爬虫程序,一个万能公式:

爬虫程序 = 网络请求 + 数据解析 + 数据存储

这三部分就对应这爬虫的基础,任何一个爬虫程序都会保存这三部分的内容,一些复杂的爬虫无非是在此基础上添加些别的内容。

3)获取不到网页的全部代码

问题:

通过request方法获取的网页代码与在浏览器看到的网页源码不一致

解决方法:

由于很多网页的数据传输是通过js命令传到网页的,因此使用request()方法不能获取通过js传递过来的信息代码,此时通过使用selenium库来模拟浏览器运行,就像真正的用户在操作一样,可通过此方法可获得该网页的源码。

from selenium.webdriver.support.wait import WebDriverWait
browser = webdriver.Chrome()
browser.get(Url)
html = browser.page_source

(4)点击下一页时网页网址不变

问题:

在爬取的过程中,由于要爬取每个律师详细信息所对应的网址,因此涉及到翻页的问题,但在网页上实时点击下一页时发现网址并没有发生变化。

解决方法:

通过使用selenium中nextpagebutton.click()方法来模拟跳转到下一页,从而对下一页的内容进行获取。

nextpagebutton = browser.find_element_by_xpath(‘//*[@class=“next_page”]’) # 定位到“下一页”按钮
nextpagebutton.click() # 模拟点击下一页
wait = WebDriverWait(browser, 10) # 浏览器等待10s

(5)文本节点问题

首先看两个HTML代码;

这是你眼中的HTML代码:

这是计算机眼中的HTML代码:

解决方法:

在BS4中,我们在HTML中看到的换行符以及空格都是NavigableString 也就是文本节点。

(6)解析网页时,如何快速找到数据存放的位置,并提取其中的数据?

这是很多新手会遇到的一个问题,就是虽然运行我的代码没有问题,大概逻辑也能读得懂,但是想修改一下爬取同类网站,或者同一个网站的其他数据时,却不知从何下手。

这个其实是对工具使用不熟悉而已;

我这里简单讲解一下(beautifulSoup)常用的使用技巧(当然它有很多强大便捷的功能,我这里只介绍几个常用的,很好用的函数,这几个用好了一样可以应付几乎所有网站)

首先,爬取之前需要定位到数据所在的标签,这个使用 F12 开发者工具中的这个按钮,点一下按钮,然后点一下网页,可以很快定位到页面中的相应标签。

这步就不详细说了,很简单的,自己摸索一下。

请添加图片描述

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

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

相关文章

Goby 漏洞发布|maxView Storage Manager 系统 dynamiccontent.properties.xhtml 远程代码执行漏洞

漏洞名称:maxView Storage Manager 系统 dynamiccontent.properties.xhtml 远程代码执行漏洞 English Name:maxView Storage Manager dynamiccontent.properties.xhtml RCE CVSS core: 9.8 影响资产数:1465 漏洞描述: maxVie…

C++debug-centos-ubuntu-vscode

1.centos下安装VSCODE 在linux系统(centOS7)中安装VSCode(Visual Studio Code)_centos vscode安装_沈醉不知的博客-CSDN博客 pacman -S code2.ubuntu下安装VSCODE 与windows下一样。 3.windows 调试 下载安装vscode cmake https://cmake.org/download GDB:UNIX及UNIX-…

php7.4生产环境压力测试CPU占用100%解决方案

最近开发了一个项目,客户要求压力测试,测试时发现并发量大时php-fpm占用cpu一直100%,调整了php的最大进程数pm.max_children,优化了程序效果不明显。后面使用了opcache,cpu使用率一下降到20%左右。 什么是opcache?下面…

网络渗透攻击与加固

目录 一、内网渗透模拟攻击 1.1 综合扫描工具 1.1.1 X-scan 1.1.2 Zenmap 1.2 内网渗透模拟流程 二、Net命令 2.1 net user 2.1.1 功能 2.1.2 用法 2.2 net localgroup 2.2.1 功能 2.2.2 用法 2.3 net share 2.3.1 功能 2.3.2 用法 2.4 net use 2.4.1 功能 2…

Lecture 20 Topic Modelling

目录 Topic ModellingA Brief History of Topic ModelsLDAEvaluationConclusion Topic Modelling makeingsense of text English Wikipedia: 6M articlesTwitter: 500M tweets per dayNew York Times: 15M articlesarXiv: 1M articlesWhat can we do if we want to learn somet…

8寸Windows 10/Android 4.4系统三防平板电脑

8寸Windows 10/Android 4.4系统三防平板电脑是一款功能强大的工业平板电脑,能够在恶劣的工业环境中工作,并能够满足各种生产应用需求。该平板电脑采用了三防设计,能够防护尘土、水等物质的侵入,同时也能够抵抗震动,保证…

openGauss社区五月运作报告

前言 五月,openGauss社区在北京举办了一年一度的开发者大会,汇报社区最新的技术创新进展、生态进展与商业实践成果,同期社区开展了多个闭门会议,SIG工作组会议,规划未来社区工作治理方向,社区工作事项分…

实战案例|黑灰产肆虐,腾讯ACE一键打造清朗游戏世界

随着游戏行业的快速发展,相关黑色产业链的问题日益严重,各种外挂、违规内容、非法交易现象的出现破坏着游戏的生态,为行业带来诸多安全挑战,也影响着玩家们的游戏体验。越来越多游戏厂商开始重视游戏安全问题,并探索全…

RocketMQ5.x版本延迟消息被重放问题调查

一、问题 由于目标计划是将集群从4.9.x逐步升级至5.x,故目前先对一些不重要的集群进行升级测试。 但是在4.x的broker陆续升级至5.x的过程中,发现了延迟消息被重放的问题。 具体如下: 在升级时刷新后台监控,发现竟然有写入量: 即…

日撸java三百行day61-62

文章目录 说明Day61 决策树1.什么是决策树2.什么是熵3.什么是信息增益4.详细例子1. weather样本2.第一次决策3.第二次决策4.最终决策树 4. 代码理解4.1 变量理解4.2 代码中主要方法理解 说明 闵老师的文章链接: 日撸 Java 三百行(总述)_minf…

深入源码分析RecyclerView缓存复用原理

文章目录 前言四级缓存 源码分析缓存一级缓存(mChangedScrap和mChangedScrap)二级缓存(mCachedViews)三级缓存四级缓存(mRecyclerPool)缓存池mRecyclerPool结构理解四级缓存简单小结 缓存流程图 复用复用流…

分布式项目15 用户注册,单点登陆dubbo来实现

分析:当用户填写完成注册信息之后,将请求发送给前台服务器.之后前台消费者利用dubbo框架实现RPC调用。之后将用户信息传递给jt-sso服务提供者.之后完成数据的入库操作。 01.页面url分析 02.查看页面JS $.ajax({ type : "POST", url : "/user/doRe…

MMPose安装及推理验证

MMPose安装 依赖环境 1.创建虚拟环境并激活 conda create --name openmmlab python3.8 -y conda activate openmmlab2.安装pytorch conda install pytorch torchvision torchaudio pytorch-cuda11.7 -c pytorch -c nvidia报错: InvalidArchiveError(‘Error wit…

quartus下联合modelsim_Altera仿真

vivado工程转换到quartus下联合modelsim仿真_内有小猪卖的博客-CSDN博客 这个博客是用单独的modelsim仿真,而下面的流程是使用quartus自带的modelsim-altera仿真。 版本为:quartus ii 13.1 64-bit 以fpga实现数码管和流水灯编码为例。数码管为1时&#x…

Spring中Bean加载流程

上面是跟踪了 getBean 的调用链创建的流程图,为了能够很好地理解 Bean 加载流程,省略一些异常、日志和分支处理和一些特殊条件的判断。 从上面的流程图中,可以看到一个 Bean 加载会经历这么几个阶段(用绿色标记)&…

机器学习算法分类(三)

在机器学习中,又分为监督学习、无监督学习、半监督学习、强化学习和深度学习。 监督、无监督、半监督学习 机器学习根据数据集是否有标签,又分为监督学习、无监督学习、半监督学习。 监督学习:训练数据集全部都有标签无监督学习&#xff1a…

grep命令的使用

grep命令是Linux中常用的文本搜索工具,它可以根据用户指定的模式,在文件或标准输入中查找匹配的文本行并返回。 下面是grep命令的一些常见选项: -i:忽略大小写-n:显示匹配行的行号-v:显示不匹配的行-r&am…

【新版】系统架构设计师 - 计算机系统基础知识

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 计算机系统基础知识考点摘要计算机系统计算机硬件组成浮点数Flynn分类法CISC与RISC流水线技术超标量流水线存储系统层次化存储结构CacheCache的命中率Cache的页面淘汰主存编址磁盘管理&#xff08…

《MySQL(四):基础篇- 约束》

文章目录 4. 约束4.1 概述4.2 约束演示4.3 外键约束4.3.1 介绍4.3.2 语法4.3.3 删除/更新行为 4. 约束 4.1 概述 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 目的:保证数据库中数据的正确、有效性和完整性。 分类: 约…

YOLOv5白皮书-第Y6周:模型改进

目录 一、改进网络结构设计1 改进的注意力机制2 多尺度特征融合3 改进的激活函数 二 数据增强和数据平衡1 数据增强2 数据平衡3 注意事项 三、模型融合策略1 投票策略2 加权平均策略3 特征融合策略4 其他模型融合策略 🍨 本文为🔗365天深度学习训练营 中…