基于java的爬虫框架webmagic基本使用
简单记录一下java项目实现网页爬取数据的基本使用.
需要引入的依赖
<dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.7.3</version></dependency><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-extension</artifactId><version>0.7.3</version></dependency>
如果引入项目失败可以到GitHub去下载master分支的最新源码,将项目导入到idea之后找到父工程webmagic-parent进行install,然后将target中jar:
webmagic-core-0.8.0.jar、
webmagic-extension-0.8.0.jar
打包到本地仓库即可.maven打包到本地方式可以参考如下:
mvn install:install-file -Dfile="D:\storage\maven_repository\com\us\codecraft\webmagic-core-0.8.0.jar" -DgroupId=us.codecraft -DartifactId=webmagic-core -Dversion=0.8.0 -Dpackaging=jarmvn install:install-file -Dfile="D:\storage\maven_repository\com\us\codecraft\webmagic-extension-0.8.0.jar" -DgroupId=us.codecraft -DartifactId=webmagic-extension -Dversion=0.8.0 -Dpackaging=jar
jar存储目录:D:\storage\maven_repository\us\codecraft\0.8.0,然后从该目录下执行上面命令.
D:\storage\maven_repository\com\us\codecraft为jar安装目录.
WebMagic使用说明:http://webmagic.io/docs/zh/posts/ch1-overview/
常用获取标签内容以及属性方法参考下面:
html<a href='www.some.com'><span>hello </span>world</a>#获取a标签下的文本xpath("//a/text()") # world#获取a标签以及子标签中的内容xpath("//a//text()") # hello world#获取a标签中的连接xpath("//a/@href") # www.some.com即获取标签属性值 (位置/@属性)
更多xpath使用说明:https://www.runoob.com/xpath/xpath-examples.html
以下是获取网页上昵称的demo:
public class MyPageProcessor implements PageProcessor {private Site site = Site.me().setRetryTimes(3).setSleepTime(100);// 存储获取的昵称private static List<String> nickNameList=new ArrayList<>();@Overridepublic void process(Page page) {//对抓取到的页面进行处理page.putField("value",page.getHtml().xpath("//p//text()").all());int a=0;// 组装数据nickNameList.addAll(Collection.class.cast(page.getResultItems().getAll().get("value")));}@Overridepublic Site getSite() {return site;}public static void main(String[] args) {//创建爬虫Spider.create(new MyPageProcessor()) //将创建好的PageProcessor页面处理器交给Spider.addUrl("https://www.qiwangming.com/wm/haoting/4583.html") //输入url//.addPipeline(new FilePipeline()) //设置结果 保存到文件
// .addPipeline(new ConsolePipeline()) //设置结果 控制台输出//.addPipeline(new JsonFilePipeline()) //设置结果 以Json格式输出//当没有设置结果输出时 默认控制台输出
// .thread(5) //设置5个线程同时执行.run(); //启动爬虫System.out.println("输出内容:"+MyPageProcessor.nickNameList);}
}
输出内容:
输出内容:[ 漫步云中月, 关于你, 触摸的星光, 踏雪无痕, 但愿, 藏在云里的喜欢, 美梦收藏家, 趁月色还在, 倾听寂寞, 独往归途, 扬花落满肩, 人间烟火, , 微云淡月, 山月记, 追逐我的明天。, 染指流年, 且听且行, 簡單陪絆, 你如温阳, 梦里七彩虹, 闻风丧破胆, 初雪未霁, 偏于谁, 暖光的惆怅, 你眼里的雾, 恰上心头, 长得帅会喊麦, 初夏的雨, 望断归来路, 终于说出口, 故事讲完, 云淡风轻, 怀抱清风, 落梅香带雪, 泪染裳, 佯装执着, 深爱不腻, 月亮魔法, 笑眼迷人, 顾北清歌寒, 难能心动, 世俗眼光, 满是欢喜, 月亮遮住脸, 莫洛曾过往, 难得一生, 往复随安, 笑弄清风, 枯守一座城, 南风向北, 草莓仙, 一池喜欢, 起舞弄影, 寒橘, 沧桑为饮, 雨下的芭蕉, 绝世的容颜, 从心动到古稀, 时光旅行者, 风中的歌声, 凡尘一梦, 繁星画作泥尘, 眉黛浅, 旧城的伤, 掌握梦想, 云深不知处, 证明给你看, 笔尖微凉, 一纸水与青, 望一片星辰, 北巷长歌悠, 饮惯烈酒, 泪水中成长, 遙遙無歸期, 灵感集市, 等风醒来, 山水几相逢, 如初不遇, 心动甜甜圈, 山后别相逢, 北葵向暖, 与我何干, 你不好看, 笑中带伤, 清风徐来, 光辉时刻, 稳做枕边人, 你是柔风, 随风远走, 煙雨霓裳, 孤魂伴野鬼, 澄澈的眼, 绿杨堤黄鸟, 迷上书甜, 恬淡春风, 许你春夏, 余情已逝, 人间惊鸿宴, 碎了星光一地, 椰果味的牛奶, 湛蓝星空, 躺在你的梨涡里, 一曲墨白, 光辉终结, 追尾的猫, | | , copyright © 2018-2020 ]
如果不确定页面的标签位置可以查看网页源码格式化,在线格式化网页代码:http://www.wetools.com/html-formatter
相关文章:
基于java的爬虫框架webmagic基本使用
简单记录一下java项目实现网页爬取数据的基本使用. 需要引入的依赖 <dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.7.3</version></dependency><dependency><grou…...
Python每日一练(20230221)
目录 1. 不同路径 II 2. 字符串转换整数 (atoi) 3. 字符串相乘 1. 不同路径 II 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中…...
【Linux】vim拒绝服务安全漏洞修复
根据国家信息安全漏洞共享平台于2023年2月19日发布的安全漏洞通知,Linux系统自带的vim编辑器存在两个高危安全漏洞(CNVD-2023-09166、CNVD-2023-09647),攻击者可以利用该漏洞发起拒绝服务攻击,并可能运行(恶…...
moveit 2源码编译
文章目录前言下载编译过程创建开发环境拉取源代码更新rosdep下载安装moveit 2依赖包编译源码输出结果总结前言 本文用来记录moveit 2从源码编译的全流程。 本机环境: 系统:debian 11 ros版本:ros2 humble 处理器:intel i7 内存&a…...
2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A模块(4)
目录 二、竞赛注意事项 (本模块20分) 一、项目和任务描述: 二、服务器环境说明 三、具体任务(每个任务得分以电子答题卡为准) A-1任务一 登录安全加固(Windows) 1.密码策略 a.更改或创建…...
微服务保护之sentinel熔断器
文章目录 目录 文章目录 前言 一、解决微服务雪崩的问题 二、使用步骤 三、熔断器的使用 3.1 限流规则 3.1.1流控模式 3.1.2流控效果 3.2 隔离和降级 3.2.1 隔离 3.2.2 降级 四、sentinel规则持久化 总结 前言 在基于 SpringCloud 构建的微服务体系中,服务间的调用…...
电动打气泵方案开发--鼎盛合PCBA方案
开车的每一个司机都必须要知道一个事情——定期检查轮胎气压是否正常,因为轮胎胎压不足会导致轮胎过早磨损,从而造成容易发生道路交通事故,并且对汽车的操控性和牵引力带来不良影响,甚至会出现爆胎或汽车失控等极其危险的事故。电…...
第十三届蓝桥杯省赛 C++ A 组 F 题、Java A 组 G题、C组 H 题、Python C 组 I 题——青蛙过河(AC)
目录1.青蛙过河1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围7.原题链接2.解题思路Ac_code1.C2.Java1.青蛙过河 1.题目描述 小青蛙住在一条河边, 它想到河对岸的学校去学习。小青蛙打算经过河里 的石头跳到对岸。 河里的石头排成了一条直线, 小青蛙每次跳跃…...
django项目实战四(django+bootstrap实现增删改查)进阶时间控件
接上一篇《django项目实战三(djangobootstrap实现增删改查)进阶分页》 知识点: 使用bootstrap-datepicker实现时间控件 一、优化layout.html模版 主要新增2个块 {% block css %}{% endblock %}{% block js %}{% endblock %} {% load static…...
Jetpack之ViewModel
The ViewModel class is a business logic or screen level state holder. 上面是官方给的定义,ViewModel 类是业务逻辑或屏幕级状态持有者。 一、业务逻辑持有者 在此之前,无论是MVC模式,还是MVP模式,在视图层,都会…...
追梦之旅【数据结构篇】——详解C语言动态实现顺序表
详解C语言动态实现顺序表~😎前言🙌顺序表概念及结构🙌功能函数的具体实现分析:🙌尾插函数具体实现:尾删函数具体实现:头插函数具体实现:头删插函数具体实现:任意插函数具…...
xss基础
目录标题一、XSS的原理二、XSS漏洞分类1、反射型xss2、存储型XSS3、基于DOM的XSS三、XSS漏洞的危害及验证四、XSS漏洞的黑盒测试五、XSS漏洞的白盒测试一、XSS的原理 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(…...
移动WEB开发二、流式布局
零、文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789个人博客-GiteePages:https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee:https://gitee.com/bluecusliyou/TechLearnGithub:https:…...
分享在线预约系统制作步骤_在线预约链接怎么做
在微信小程序上进行在线预约,不管是商家还是顾客,都可以自由选择时间,顾客还可以通过预约小程序,了解到所选服务的详情和功能特色,不必等到去店内听介绍,顾客能节省等候时间,商家能解放招待人力…...
【每日一题Day125】LC1326灌溉花园的最少水龙头数目 | 动态规划 贪心
灌溉花园的最少水龙头数目【LC1326】 在 x 轴上有一个一维的花园。花园长度为 n,从点 0 开始,到点 n 结束。 花园里总共有 n 1 个水龙头,分别位于 [0, 1, ..., n] 。 给你一个整数 n 和一个长度为 n 1 的整数数组 ranges ,其中 …...
C# FFmpeg推流Vlc.DotNet拉流优化参数
FFmpeg是流媒体开源神器,视频转换、剪裁包括推流,无所不能,很多系统都是基于其开发的。拉流可以用FFplay,但是不利于集成到自己的代码中,因此拉流选择了Vlc.DotNet。 在使用中,仅使用默认参数,…...
pnpm v8版本升级变化关注点(前瞻速攻版)
前言 pnpm v8.0.0-alpha.0 版本已经发布,包含少量变化,但其中还是有令人在意的点的。 本文将默认读者拥有大部分 pnpm v7 版本的知识储备,进行 v8 版本的前瞻速攻。 安装方法 目前通过指定 Tag 方式可以安装 v8 alpha 版: npm…...
Python基础-环境安装
Python安装1.下载PythonPython网址:https://www.python.org/进入Python官网,点击Downloads,选择自己对应的操作系统(此处以Windows为例)在左侧的稳定发行版中,选择一个3.5版本以上的,然后点击对…...
重载、重写、重构概念辨析
首先,重载、重写、重构都表现为方法名相同 重载 重载(overload),表示同一类的方法之间的关系,至少有以下其中一种情况 参数个数不同参数类型不同参数顺序不同 注意,返回值类型不同不能作为重载依据 重…...
第九章 - 多表查询(join,left join 等)与合并查询(union union all)
第九章 - 多表查询(join,left join 等)与合并查询(union)交叉链接(笛卡尔积)内连接查询外连接查询左链接: left join右链接:right join组合查询 union & union all使…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
WebGL:在浏览器中解锁3D世界的魔法钥匙 引言:网页的边界正在消失 在数字化浪潮的推动下,网页早已不再是静态信息的展示窗口。如今,我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室,甚至沉浸式的V…...
Python第七周作业
Python第七周作业 文章目录 Python第七周作业 1.使用open以只读模式打开文件data.txt,并逐行打印内容 2.使用pathlib模块获取当前脚本的绝对路径,并创建logs目录(若不存在) 3.递归遍历目录data,输出所有.csv文件的路径…...
「Java基本语法」变量的使用
变量定义 变量是程序中存储数据的容器,用于保存可变的数据值。在Java中,变量必须先声明后使用,声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例:声明与初始化 public class VariableDemo {publi…...
