码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 附录1-爬虫的一些技巧


    目录

    1  寻找url与显示内容的关系

    2  修改请求头

    3  局部刷新

    4  阅读返回信息

    5  多尝试页面其他的使用方式

    6  尝试不同类型参数

    7  表单类型的post多用data发,接口类型的post多用json发

    8  消除degger

    9  你在浏览器上看到的html与你下载下来的html不一定一样


    1  寻找url与显示内容的关系

    比如在百度中,查询字符串wd与你搜索的内容一致

    再比如 起点中文网,我随便找了一本小说,它的第一章对应的是 759237818

    它的第二章是759237819

    我们不难猜出它的第三章就是 759237820 ,但它并不是,不过也八九不离十

    2  修改请求头

    可以在web调试工具中查看你当前的请求头,然后把请求头尽量贴近你当前的请求头

    修改User-Agent的时候不要只使用一个,你就爬的时候近network看一下,有时候你用老的User-Agent是不行的

    3  局部刷新

    我们以百度翻译为例,首先点击这里清楚所有network记录

    然后输入内容,输入内容后发现多了15条新内容,这些内容不是一开始就有的,而是我们做出了一些动作搞出来的

    我们筛选出XHR的请求,XHR是ajax请求,这些请求通常会携带内容

    我们可以通过请求大致看出来业务逻辑,比如langdetect就是检测你是什么语言,v2transapi就是翻译

    我们想获取翻译就点开这个ajax请求,我们从Headers中看到了路由和方法

    再看它的参数

    再看它的响应,我们找到了翻译的结果

    使用Preview看的更清楚些

    4  阅读返回信息

    于是我们尝试发起依次请求

    结果是200,给了一些信息,但是看不懂

    我们可以通过在线转换utf-8的网站看一下是什么意思 在线UTF-8编码转换工具-UTF8编码解码在线转换工具

    我们不难看出,这个query大致对应的是字符 我,于是我们先翻译一下,发现确实如此

    那么我们就可以按照格式翻译errmsg中的内容了,翻译结果没有给出我们任何有用的信息,所以如果遇到这种情况我们需要考虑别的可能

    5  多尝试页面其他的使用方式

    上面我们搞的是汉译英,我们此时再尝试英译汉,使用相同的方式我们可以看到路由与方法

    传入的参数,这个参数相较于汉译英的参数是简明许多的

    请求的结果

    我们不妨再用这种方式发送请求试一试

    这一次尝试我们拿到了我们想要的信息

    6  尝试不同类型参数

    我们最初的目的是要搞 汉译英,现在我们搞到了英译汉,我们不妨尝试将 英文参数 换位中文参数

    我们可以在响应信息中得到想要的结果

    7  表单类型的post多用data发,接口类型的post多用json发

    表单类型的post有前端的交互,比如这种

    接口类型的post就比如刷新了一下,或者是下拉触底了这种,多用json

    8  消除degger

    比如 这个网址 https://www.nmpa.gov.cn/ 它搞了很多debugger不让你看调试工具

    如果数量小的话,我们可以手动禁止 debugger

    之后就没有debugger的问题了

    在这个网站上,debugger就好像防水的堤坝,如果把堤坝拔掉,那么水就会灌进来。这里如果给debugger搞掉,那么它就会给你一顿整,像是什么79,67就是用你的机器做一些无意义的运算

    最终的结果会导致你CPU使用率飙升

    这个时候把有debugger的页签关闭就行了

    这种情况如果还想看F12中的network的话,你就需要用快一点的速度看,看完赶紧关。这种爬的难度就高了很多,因为你CPU高会导致你看network的速度变慢。所以这种情况F12的network就用不了了

    9  你在浏览器上看到的html与你下载下来的html不一定一样

    比如 整套简历-整套简历模板下载

    浏览器上的html是

    下载下来的html是

    你解析的时候按下载下来的html走

  • 相关阅读:
    【Python】使用Pandas和随机森林对鸢尾花数据集进行分类
    java下标索引异常
    数据库改造(Oracle->PostgreSQL)
    Hive SQL-DML-insert插入数据
    Linux系统编程(2)
    Bayer 模式图像(bggr ,grbg, gbrg)转rgb888
    vscode 默认终端(Terminal) 为CMD,但是新建是powerShell
    ARM系列之ARM多核指令WFE、WFI、SEV原理
    下一代大数据分布式存储技术Apache Ozone初步研究
    Imaris 卡退,是不是缓存盘没有设置好?
  • 原文地址:https://blog.csdn.net/potato123232/article/details/132690371
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号