热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

对于爬虫的这几点,你没认真整理了解过

首先,爬虫不是我的本职工作,我爬虫是为了工作而准备的,但爬虫内容真的很多:静态页面、动态页面、JS加密、App加密、逆向工程

首先,爬虫不是我的本职工作,我爬虫是为了工作而准备的,但爬虫内容真的很多:静态页面、动态页面、JS 加密、App 加密、逆向工程等等,对于这么一篇文章来说,我希望对你学习爬虫有一些帮助。


1. 准备工作

在具体分享之前,我也要教你如何安装 Postman。


1.1 下载 Postman

Postman 一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如 Jmeter、soapUI 等。不过,对于开发过程中去调试接口,Postman 确实足够的简单方便,而且功能强大。
官方网站:https://www.postman.com/

image-20200517010434123

下载也很简单,如果这一步不会的话,也可以加小编好友拉你进交流群!微信号:AndersonHjb,添加小编好友的时候记得来者目的,24h 内通过。

对于安装包,官网下载较慢,小伙伴还可以从蓝奏云下载,也是最新版本(2020),公众号后台回复:postman,即可。


1.2 安装


  1. Postman 最早是作用 chrome 浏览器插件存在的,所以,你可以到 chrome 商店搜索下载安装,因为重所周知的原因,所以,大家都会找别人共享的 postman 插件文件来安装。由于 2018 年初 Chrome 停止对Chrome应用程序的支持。

  2. Postman 提供了独立的安装包,不再依赖于 Chrome 浏览器了。同时支持 MAC、Windows 和 Linux,推荐你使用这种方式安装。

一般我的爬虫流程是这样的:


  1. 浏览器访问待爬网页,并提前打开开发者工具(F12),选中 Nework 选项卡,这样就可以看到网络交互信息;或者,右键查看网页源代码,查找目标信息。

  2. 在网络交互信息流中筛选出自己需要的,然后在 postman 中模拟请求,看是否仍然可以获取到想要的信息;Postman 除了可以进行请求测试外,还有一个优势就是,代码可以直接生成,这样就可以方便得进行最终的整合了。

  3. 数据解析,从请求的响应中解析出我们的目标数据,至于得到数据后如何处理,那就是你的事情了。

下面就以大家耳熟能详的豆瓣电影 TOP250 为例。


2. 实例分析


2.1 请求梳理

首先,我们要访问待爬取的网页:https://movie.douban.com/top250。

一般情况下,我都是直接按下 F12 调出 DevTools,点击 Network 选项卡:

豆瓣TOP250

有时请求已经加载完成了,可以把数据全部 clear 掉,然后重新刷新网页,这时候请求流会重新加载。

这里有几个点需要注意,主要是下图圈红的几个:

DevTools选项

我一般是把上面的几点勾选起来。


  1. 有些网页请求会有自动跳转,这是请求流会重新加载,这是勾选了 Preserve log 的话,数据就会持续打印,不会被冲掉;(也就是,你有可能在等待加载的时候,结果正式要去分析的时候却消失了)

  2. 勾选 Disable cache 可以禁用缓存;

  3. 请求流的筛选:XHR 是 XMLHttpRequest 的意思,大多数情况下只要点击 XHR 就行了,但是若此时发现没有想要的请求数据,那么就要点击 All 展示所有请求流。

比如豆瓣的这个,XHR 中是没有我们的目标请求的。

XHR or All


2.2 请求模拟

通过上面的步骤,我们能够确定通过哪些请求能够得到我们的目标数据,然后把这些请求放到 postman 中进行模拟。

比如,我们在 postman 中访问豆瓣的网站:

postman访问

这里的请求比较简单,直接 get url 就能获取到目标数据。

其实大部分情况下,都是需要添加一些访问参数的,这是我们可以在 Headers 里添加。

另外,postman 还支持其他请求,如 post、delete 等等:

其他请求


  • 生成代码

点击右侧的 code 按钮,就可以获取到对应的代码:

code

支持生成多种语言的代码,操作动图如下:

比如,我们这里选择 Python Requests,就可以得到如下代码:

url = "https://www.aiyc.top/"

import requestsurl = "https://www.aiyc.top/"payload = {}
headers = {'COOKIE': 'e21622aacc25df990a6b262591f2c098latest_time_id=91'
}response = requests.request("GET", url, headers=headers, data = payload)print(response.text.encode('utf8'))

url = "https://movie.douban.com/top250"

import requestsurl = "https://movie.douban.com/top250"headers = {'cache-control': "no-cache",'postman-token': "d2e1def2-7a3c-7bcc-50d0-eb6baf18560c"}response = requests.request("GET", url, headers=headers)print(response.text)

这样我们只要把这些代码合并到我们的业务逻辑里就行了,当然其中的 postman 相关的参数是不需要的。


2.3 数据解析

下面要做的就是从响应中解析目标数据。

有些响应是返回 HTML,有些是返回 json 数据,有的还是返回 XML,当然也有其他的,这就需要不同的解析逻辑。

具体如何解析,这里我们不再赘述,之前的爬虫文章中都有涉及,有兴趣的可以翻一翻。


3. 总结

本来打算写 postman 的使用的,但是写来写去,成了我的一般爬虫流程梳理。

本文涉及的爬虫都是比较初级的,至于 ip 代理、验证码解析等高端功能,后面有会慢慢出来还会手把手教学搭建代理池(包括代理评分等等)如果,本文 在看 超过 20 我就写出来。

不知道你的一般流程是什么样的,不妨留言分享下。(点击阅读原文,在我的博客下留言噢!期待和你的交流)


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
author-avatar
手机用户2602898555
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有