chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具

这篇具有很好参考价值的文章主要介绍了chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在前面的课程中,我们通过一个简单的天气预报服务,拓展了如何使用邮件、短信,以及部署在服务器上,完整的开发了一款可以正式使用的小程序。但是有的同学可能也会产生抱怨:这门课不是是爬虫入门吗?为什么讲的爬虫技术这么少呢?因此,本篇文章主要介绍我们接下来要使用,也是以后我们日常开发中经常用到的爬虫技术。同时,本文也简短的介绍一款网页分析利器fiddler4,方便我们“拨开”网页的云雾“。本文所涉及到的代码,你仍然可以从本门课程的Github页面上获取,同时也欢迎大家在讨论区进行讨论!

Ajax——让人爱让人恨的开发技术

如果同学们课后使用之前我们学到的爬虫技术,爬取某些热门网站的话,可能会出现这样一种问题——爬取到的内容,和自己看到的内容不一样。
如果你没遇到上述的情况,那请回忆一下,当我们访问GitChat首页,一直下滑我们的鼠标,发现首页能够展示刚打开网页时未显示的数据:
chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具,Python 爬虫从入门到精通,爬虫,python,后端

我们可以看到,当我们使用鼠标将网页拖到最下面时,页面会立刻载入新的内容——这些内容是我们刚开始访问的时候,并不存在的。有心的同学可能也发现当页面加载新的内容的时候,左下角也会相应的显示出网页URL。
那么,到底什么是Ajax呢?

Ajax 是一种用于创建快速动态网页的技术。
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

简单的来说,Ajax能够只加载网页的部分内容,一方面提高了网页显示的速度,另一方面也让我们的获取信息变得困难——Ajax让开发人员减少了工作量,让我们这些爬虫新手增加了难度。接下来,让我们解决这个问题。

Chrome——不仅仅是浏览器这么简单

从开始到现在,本门课程一直使用的是Chrome浏览器——除了它的确速度快、可以安装第三方插件外,最重要的是,它内置的"检查"功能,强大到甚至我们都不需要专业的网页分析工具。
chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具,Python 爬虫从入门到精通,爬虫,python,后端

接下来我们就要使用Chrome的检查功能,解析Ajax的数据。

注意!本文仅仅从技术角度分析如何解决Ajax加载数据的问题。

我们爬取的网页默认为GitChat首页,尝试获取其所加载的课程标题。
我们在之前就已经确认了该首页使用了Ajax技术,为了确定我们爬取的URL,我们在Chrome中,依次右击->检查->network栏,看它究竟是怎么加载的。
chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具,Python 爬虫从入门到精通,爬虫,python,后端

我们可以看到每次我们下拖网页时,系统就会通过Ajax加载对应的网页:
chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具,Python 爬虫从入门到精通,爬虫,python,后端

通过分析我们不难发现,在标注的绿色区域,系统分别加载了对应的数据,同时在下面,我们可以看到加载的网页,其实是存在一定的规律的:

https://gitbook.cn/chat/activity/40/60?  加载40-60序号的数据
https://gitbook.cn/chat/activity/60/80?  加载60-80序号的数据
https://gitbook.cn/chat/activity/80/100? 加载80-100序号的数据

让我们尝试直接访问一个网址:
chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具,Python 爬虫从入门到精通,爬虫,python,后端

返回的是一个Json格式的数据,让我们使用Python去解析它:

import requests
import json
import re
url = 'https://gitbook.cn/chat/activity/80/100?'

response = requests.get(url)
content  = json.loads(response.text)  ##将返回的数据以Json格式存储
data = content['data']
print(data)

看上去我们想要获取的数据都已经完成了,那么,真正打印出来的数据是什么呢?

<div style="padding:0;border-bottom: 1px solid #f5f5f5;" class="col-md-12"><a href="/gitchat/activity/5b401bcd920199317157e6ab"><div style="border:0;padding:0;" class="mazi-item"><div style="padding: 10px 0 10px 0;" class="item-name-cardV2"><img src="https://images.gitbook.cn/80f5c370-516b-11e7-b840-9125653bdbb4" class="item-author-thumbV2"/><div class="item-author-ndV2"><div class="item-titleV2">软件测试从业者18条可行性发展路径</div><div style="padding-top: 3px;" class="item-author-nameV2">IDO老徐</div><div class="item-author-descV2">测试经理</div></div></div><div style="margin: 0 0 8px -10px;" class="mazi-item-bottom"><div style="margin-left:8px;display: inline;"><span class="icon2 lnr-user"></span><span class="text">30</span></div><a href="/?categoryId=58e84f1584c651693437f27c" class="textTag category">职场</a>.....

可以发现,我们真正得到的,只是网页的代码,并没有真正获取到标题。这个时候,我们就要使用我们之前提到过的,但是从来未使用的技术——正则表达式:

import re
url = re.findall('/gitchat/activity/\S{24}',data)
print(len(url))

在上述的代码中,我们导入了re模块,并且使用findall()函数,查找符合正则表达式的课程地址,让我们看现在打印什么吧:

['/gitchat/activity/5b401bcd920199317157e6ab', '/gitchat/activity/5b3aca0819d0a05d47ecc544', '/gitchat/activity/5b3dd77505765f300a81bfe0', '/gitchat/activity/5b4202fe13a6987360cdd26e', '/gitchat/activity/5b42ab12b840d242d3ee2232', '/gitchat/activity/5b42aac8326c9140b77d9081', '/gitchat/activity/5b42d4e64d8d8f115b62c585', .....

Bingo!我们成功获得了网址的地址,那么我们访问对应的网址,就可以获取到了Ajax加载的课程标题啦!什么?你还想看怎么获取标题的?那么就去Github上看对应的代码吧!

Finddler 4——一款实用的抓包工具

Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改。
代理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,代理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端。
Fiddler可以抓取支持http代理的任意程序的数据包,如果要抓取https会话,要先安装证书。

之前我们爬取的网站,大部分都是通过get方式获取的,但是在日常的上网浏览时,类似于登录、注册等操作,都是通过post方式向服务器发送数据的。使用Chrome的检查虽然也能够帮我们抓取数据包,但是对于Fiddler 4来说,就是“小巫见大巫”了。
我们今天以爬取XX教务系统为目标,通过Fiddler 4来获取我们登录时需要传输的数据,为后续的成绩推送系统做准备!
首先我们需要下载Fiddler 4。安装过程没有什么需要特别注意的,直接一路next即可。
chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具,Python 爬虫从入门到精通,爬虫,python,后端

如上图所示,当我们打开软件时,左边显示了我们浏览的网页地址,右边是网页传输时候的数据。
废话不多说,我们直接分析我们的登录界面:
chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具,Python 爬虫从入门到精通,爬虫,python,后端

可以看到,在最后的字符串中,我们需要提交的数据有:__VIEWSTATETextBox1TextBox2TextBox3RadioButtonList1Button1lbLanguage
经过查询,我们可以知道这些参数的意义为:

  • _VIEWSTATE:.Net框架特有的一个东西
  • extBox1:学号参数
  • TextBox2:密码参数
  • TextBox3:验证码
  • RadioButtonList1:学生标记
  • Button1:空值
  • lbLanguage:空值

仅仅是普通访问,我们就能够直接获取对应的数据,是不是特别简单!没错,Fiddler 4能够大大地简化我们的工作!文章来源地址https://www.toymoban.com/news/detail-811704.html

总结
  1. 本文首先介绍了目前流行Ajax技术,然后使用Chrome分析Ajax加载的规律,最后使用正则表达式获取到了相应的课程标题;
  2. 正如之前提到的那样,正则表达式是一种强大的语言,当网站没有一定的规律或者是爬取的信息不能够正常的解析出来时,我们只能通过正则表达式来获取我们想要的数据;
  3. Fiddler 4 最大的优点是可以直接连接手机,抓取手机的请求数据——在某些情况下,使用手机爬取信息往往是最简单的。限于篇幅原因,你可以在这篇文章了解如何连接手机;
  4. 接下来我们就要实战成绩通知系统,如果你有时间,可以往前翻翻我们之前学的知识,然后投入到最后的大项目开发中!

到了这里,关于chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Spring AI让你的Spring Boot应用快速拥有生成式AI能力

    之前分享了关于Spring新项目 Spring AI 的介绍视频。视频里演示了关于使用Spring AI将Open AI的能力整合到Spring应用中的操作,但有不少读者提到是否有博客形式的学习内容。所以,本文就将具体介绍如何使用 Spring AI 快速让您的Spring应用拥有生成式AI的强大能力。 第一步:使用你

    2024年02月03日
    浏览(40)
  • 如何快速制作专属的电子名片?这简单的五步操作让你快速拥有

    在大数据互联网时代,许多的智能产品已经进入到人们日常生活和工作的各个领域。在日常人际交往和商务社交中,电子名片作为一种新的智能产品,正在逐步淘汰传统纸质名片。然而,仍有许多的商务人士还不会使用和制作“电子名片”。 原因在于很多人认为电子名片听着

    2024年02月11日
    浏览(40)
  • 15-721 Chapter10 恢复协议

    为了在可能crash的情况下,确保事务和数据库状态的,一致性,原子性,持久性。恢复算法大体可以分为两个方面:1.在事务过程中要做哪些处理   2.崩溃后要做哪些处理。 1.恢复不需要跟踪dirty page 2.只要redo,不用undo 3.不需要记录index,直接重建index就好,如果从disk拿的话,

    2024年02月01日
    浏览(38)
  • Chapter10-NameServer 源码解析

            10.1.1 入口函数          首先看一下 NameServer 的源码目录(见图 10-1 ) 。NamesrvStartup 是模块的启动入 口, NamesrvController 是用来协块各个调模功能的代码。         我们从启动代码开始分析,找到 NamesrvStartup.java 里的 main 函数 public static void main(String[] ar

    2023年04月22日
    浏览(32)
  • 【AI绘画:月入万元的秘籍】揭秘!这个AI绘画神器不仅让你拥有艺术天赋,还能轻松变现!跟着教程一起赚钱吧!

    随着AI的飞速发展,三页AI成为了创新艺术的新宠。它利用先进算法和大数据,使得个性化设计变得触手可及,轻松将你的照片变成独特的卡通形象。现在,每个人都有机会成为AI设计师! 今天为大家介绍一款上手非常简单的三页AI平台,对AI小白十分友好,无需魔法,微信即

    2024年03月16日
    浏览(51)
  • Reinforcement Learning with Code 【Chapter 10. Actor Critic】

    This note records how the author begin to learn RL. Both theoretical understanding and code practice are presented. Many material are referenced such as ZhaoShiyu’s Mathematical Foundation of Reinforcement Learning . This code refers to Mofan’s reinforcement learning course . 10.1 The simplest actor-critic algorithm (QAC) ​ Recall the idea of policy gr

    2024年02月13日
    浏览(49)
  • Windows10中用Docker优雅的拥有一个自己的Linux环境

    使用windows的同学,想学习或者使用Linux环境时,通常会有 Hyper-v , vmware workstation , virtualbox 等虚拟机再安装Linux系统。 快使用Docker吧,彻底抛弃虚拟机 安装docker 请猛戳: Windows10环境下安装Docker - 技术圈 修改镜像 为了更快速的拉取镜像,这里使用阿里的镜像 启动Docker后,在

    2024年02月19日
    浏览(53)
  • 数据可视化工具LightningChart .NET正式发布v10.5.1——拥有全新的3D新功能

    LightningChart.NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学,工程,医学,航空,贸易,能源和其他领域的体绘制功能。 LightningChart .NET v10.5.1正

    2024年02月13日
    浏览(49)
  • C生万物 | 火眼辨析指针数组与数组指针

    本文我们来讲讲C语言中的易混淆的 指针数组与数组指针 ✒ 首先我想问你一个问题:指针数组是一个 指针还是一个数组 呢? 好,解答一下上面的问题,对于【指针数组】来说,它是一个 数组 ,而不是指针 来看一下上面这三个数组的定义 对于 arr1 ,他是一个整型数组,它

    2023年04月17日
    浏览(34)
  • Windows 10计算机性能优化:让你的电脑更流畅

    Windows 10是目前最流行的操作系统之一,但在长期使用过程中,可能会出现一些性能方面的问题。本文将为你介绍如何选择合适的Windows 10版本,并提供一些优化技巧,使你的电脑性能更加流畅。此外,还将特别关注游戏用户和工科工作流,提供相应的优化方向。让我们开始吧

    2024年02月10日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包