爬虫利器一览

news/2024/7/19 11:15:41 标签: 爬虫, jsoup, xpath, css选择器, findler

前言

爬虫(英文:spider),可以理解为简单的机器人,如此一个“不为名利而活,只为数据而生,目标单纯,能量充沛,不怕日晒雨淋,不惧寒冬酷暑”的家伙,真讨人喜欢~

在这里插入图片描述

在博主的历史文章中,已对爬虫的原理机制、实践操作做了基本的介绍。
如感兴趣,可直接拖到文末,双击666~

今天我们从爬虫日常中使用的工具,进行简单介绍,希望各位盆友有所收获。

一、网站分析

网站类型网站特点
动态网站数据通过一定的前端框架封装输出,且必须经过后台API获得
静态网站数据静态填充,所见即所得

我们通常遇到的数据源网站,不外乎以上两类,要么静态网页,要么动态网页。当然从爬虫的角度,静态有静态的处理方式,动态有动态的处理方式。

在这里插入图片描述
这里,举个栗子。以开源中国-博客为例,https://www.oschina.net/blog/recommend,这就是纯静态网站,可以直接进行数据获取。

二、数据抓包

对网站进行初步分析后,即可发起数据抓包了。此刻,可能有些同学不懂了,什么是抓包呀?

抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。——百度百科

简单一句话:作为程序员,如果不会抓包,就去钻研一下吧。抓包工具主要有:

工具名称工具简介
浏览器作为互联网的窗口,浏览器是最简单也是最直接的抓包工具,比如FF/Chrome
FiddlerFiddler是一个http协议调试代理工具,它能够记录并检查访问互联网之间的http通讯
PostmanPostman是一款功能超级强大的用于发送 HTTP 请求的工具,开适用于开发/测试
HttpWatchHttpWatch是一个可用于录制HTTP请求信息的工具,由Simtec Limited公司开发
WiresharkWireshark是非常流行的网络封包分析软件,可以截取各种网络数据包

以上工具,各有特色,也有各自适用的环境,各位盆友可自由选之。

三、数据解析

通过前两步准备后,即可进行数据解析和结构化处理。而通常使用的工具也不少,博主重点介绍几个。

1. Css selector

css 选择器,可划分为基本选择器、关系选择器、伪选择器三种类型不同的选择器。这是CSS开发的基础语法和规范。

在这里插入图片描述

2. Jsoup

Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

这是一个来自官网的示例:通过设置select实现对document的遍历。

Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
log(doc.title());
Elements newsHeadlines = doc.select("#mp-itn b a");
for (Element headline : newsHeadlines) {
  log("%s\n\t%s", 
    headline.attr("title"), headline.absUrl("href"));
}
3. Xpath

XPath 表示 XML 路径语言。它使用非 XML 语法来提供一种灵活地定位(指向)XML 文档的不同部分的方法。

在这里插入图片描述

目前主流浏览器均已集成xpath插件,可快速定位所需的节点。


结语

一个优质的爬虫,从不拒绝贪婪,也不会肆无忌惮。虽然我们通过以上工具可以基本完成所需的数据抓取,但道亦有道,也需以“礼”服人。拒绝滥用爬虫,拒绝暴力破解~


精彩回顾

一文图解爬虫(spider)
一文图解爬虫_姊妹篇(spider)


在这里插入图片描述


http://www.niftyadmin.cn/n/5318289.html

相关文章

第十二届“中关村青联杯”全国研究生数学建模竞赛-A题:水面舰艇编队防空和信息化战争评估模型(续)(附MATLAB代码实现)

目录 5.3.3 问题三的总结 5.4 问题四的模型建立与求解 5.4.1 问题分析 5.4.2 计算方位角和航向角

C++学习笔记(三十五):c++ 函数指针及lambda表达式

本节介绍c函数指针。在一些源码中经常能看到c函数指针,但之前一直觉着这一块比较复杂,就一直没去仔细研究,终于有时间去仔细研究这一块内容了。 c风格的函数指针 函数指针是指将一个函数赋值给一个变量的方法,可以将函数作为一个参…

二线接近开关接线图解

下图为一个实用二线制接近开关内部原理图。它的振荡部分和图一一样。只不过是在给接近开关停振时增加了稳压和反向放大部分。它由VT7和D5组成稳压电源提供给C3充电。VT5、VT6、VT8及R11、12、15、16、17及D3组成三级反向放大器。其中VT8作为开关输出。因为是外接二线&#xff0…

嵌入式-Stm32-江科大基于寄存器点亮LED灯

文章目录 前言:一:搭建基于寄存器控制LED的工程二:用江科大的STM32板子实现基于寄存器点亮LED灯三:用非江科大stm32板子实现基于寄存器点亮LED灯道友:一星陨落,黯淡不了星空灿烂;一花凋零&#…

【GO语言依赖】Go语言依赖管理简述

在运行环境中,遭遇报错,显示找不到函数 经过研究后发现需要进行依赖管理,进行如下操作后解决: 起源 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如…

安达发|APS智能排产系统之特征间隔规则

APS智能排产系统是一种基于先进计划与排产理念的智能化生产管理工具,它通过整合企业内外部资源,实现生产计划的自动优化、排产任务的自动分配和生产过程的实时监控。在APS系统中,特征间隔规则是一个重要的排产策略,它可以帮助企业…

LeetCode_5_中等_最长回文子串

文章目录 1. 题目2. 思路及代码实现(Python)2.1 动态规划2.2 中心扩展算法 1. 题目 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入&#…

Java Http各个请求类型详细介绍

1. 前言 在Spring Boot框架中,HTTP请求类型是构建Web应用程序的重要组成部分。常见的请求类型包括GET、POST、PUT和DELETE,每种类型都有其特定的用途和特点。本文将详细比较这四种请求类型,帮助您在开发过程中做出明智的选择。 2. GET请求…