当前位置: 首页 > news >正文

基于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 网格的左上角 &#xff08;起始点在下图中标记为“Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中…...

【Linux】vim拒绝服务安全漏洞修复

根据国家信息安全漏洞共享平台于2023年2月19日发布的安全漏洞通知&#xff0c;Linux系统自带的vim编辑器存在两个高危安全漏洞&#xff08;CNVD-2023-09166、CNVD-2023-09647&#xff09;&#xff0c;攻击者可以利用该漏洞发起拒绝服务攻击&#xff0c;并可能运行&#xff08;恶…...

moveit 2源码编译

文章目录前言下载编译过程创建开发环境拉取源代码更新rosdep下载安装moveit 2依赖包编译源码输出结果总结前言 本文用来记录moveit 2从源码编译的全流程。 本机环境&#xff1a; 系统&#xff1a;debian 11 ros版本&#xff1a;ros2 humble 处理器&#xff1a;intel i7 内存&a…...

2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A模块(4)

目录 二、竞赛注意事项 &#xff08;本模块20分&#xff09; 一、项目和任务描述&#xff1a; 二、服务器环境说明 三、具体任务&#xff08;每个任务得分以电子答题卡为准&#xff09; A-1任务一 登录安全加固&#xff08;Windows&#xff09; 1.密码策略 a.更改或创建…...

微服务保护之sentinel熔断器

文章目录 目录 文章目录 前言 一、解决微服务雪崩的问题 二、使用步骤 三、熔断器的使用 3.1 限流规则 3.1.1流控模式 3.1.2流控效果 3.2 隔离和降级 3.2.1 隔离 3.2.2 降级 四、sentinel规则持久化 总结 前言 在基于 SpringCloud 构建的微服务体系中&#xff0c;服务间的调用…...

电动打气泵方案开发--鼎盛合PCBA方案

开车的每一个司机都必须要知道一个事情——定期检查轮胎气压是否正常&#xff0c;因为轮胎胎压不足会导致轮胎过早磨损&#xff0c;从而造成容易发生道路交通事故&#xff0c;并且对汽车的操控性和牵引力带来不良影响&#xff0c;甚至会出现爆胎或汽车失控等极其危险的事故。电…...

第十三届蓝桥杯省赛 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项目实战三&#xff08;djangobootstrap实现增删改查&#xff09;进阶分页》 知识点&#xff1a; 使用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. 上面是官方给的定义&#xff0c;ViewModel 类是业务逻辑或屏幕级状态持有者。 一、业务逻辑持有者 在此之前&#xff0c;无论是MVC模式&#xff0c;还是MVP模式&#xff0c;在视图层&#xff0c;都会…...

追梦之旅【数据结构篇】——详解C语言动态实现顺序表

详解C语言动态实现顺序表~&#x1f60e;前言&#x1f64c;顺序表概念及结构&#x1f64c;功能函数的具体实现分析&#xff1a;&#x1f64c;尾插函数具体实现&#xff1a;尾删函数具体实现&#xff1a;头插函数具体实现&#xff1a;头删插函数具体实现&#xff1a;任意插函数具…...

xss基础

目录标题一、XSS的原理二、XSS漏洞分类1、反射型xss2、存储型XSS3、基于DOM的XSS三、XSS漏洞的危害及验证四、XSS漏洞的黑盒测试五、XSS漏洞的白盒测试一、XSS的原理 跨站脚本攻击XSS&#xff08;Cross Site Scripting&#xff09;&#xff0c;为了不和层叠样式表&#xff08;…...

移动WEB开发二、流式布局

零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&#xff1a;https:…...

分享在线预约系统制作步骤_在线预约链接怎么做

在微信小程序上进行在线预约&#xff0c;不管是商家还是顾客&#xff0c;都可以自由选择时间&#xff0c;顾客还可以通过预约小程序&#xff0c;了解到所选服务的详情和功能特色&#xff0c;不必等到去店内听介绍&#xff0c;顾客能节省等候时间&#xff0c;商家能解放招待人力…...

【每日一题Day125】LC1326灌溉花园的最少水龙头数目 | 动态规划 贪心

灌溉花园的最少水龙头数目【LC1326】 在 x 轴上有一个一维的花园。花园长度为 n&#xff0c;从点 0 开始&#xff0c;到点 n 结束。 花园里总共有 n 1 个水龙头&#xff0c;分别位于 [0, 1, ..., n] 。 给你一个整数 n 和一个长度为 n 1 的整数数组 ranges &#xff0c;其中 …...

C# FFmpeg推流Vlc.DotNet拉流优化参数

FFmpeg是流媒体开源神器&#xff0c;视频转换、剪裁包括推流&#xff0c;无所不能&#xff0c;很多系统都是基于其开发的。拉流可以用FFplay&#xff0c;但是不利于集成到自己的代码中&#xff0c;因此拉流选择了Vlc.DotNet。 在使用中&#xff0c;仅使用默认参数&#xff0c;…...

pnpm v8版本升级变化关注点(前瞻速攻版)

前言 pnpm v8.0.0-alpha.0 版本已经发布&#xff0c;包含少量变化&#xff0c;但其中还是有令人在意的点的。 本文将默认读者拥有大部分 pnpm v7 版本的知识储备&#xff0c;进行 v8 版本的前瞻速攻。 安装方法 目前通过指定 Tag 方式可以安装 v8 alpha 版&#xff1a; npm…...

Python基础-环境安装

Python安装1.下载PythonPython网址&#xff1a;https://www.python.org/进入Python官网&#xff0c;点击Downloads&#xff0c;选择自己对应的操作系统&#xff08;此处以Windows为例&#xff09;在左侧的稳定发行版中&#xff0c;选择一个3.5版本以上的&#xff0c;然后点击对…...

重载、重写、重构概念辨析

首先&#xff0c;重载、重写、重构都表现为方法名相同 重载 重载&#xff08;overload&#xff09;&#xff0c;表示同一类的方法之间的关系&#xff0c;至少有以下其中一种情况 参数个数不同参数类型不同参数顺序不同 注意&#xff0c;返回值类型不同不能作为重载依据 重…...

第九章 - 多表查询(join,left join 等)与合并查询(union union all)

第九章 - 多表查询&#xff08;join&#xff0c;left join 等&#xff09;与合并查询&#xff08;union&#xff09;交叉链接&#xff08;笛卡尔积&#xff09;内连接查询外连接查询左链接&#xff1a; left join右链接&#xff1a;right join组合查询 union & union all使…...

ubuntu显示器未知

在Ubuntu系统中&#xff0c;当外接显示器被识别为“未知设备”时&#xff0c;可通过以下日志文件进行问题诊断&#xff0c;结合Xorg日志和内核日志综合分析&#xff1a; &#x1f50d; 一、查看Xorg显示服务日志&#xff08;核心&#xff09; Xorg日志记录了图形界面的详细事…...

【华为云学习与认证】以华为云物联网为基座的全栈开发(从物联网iot平台模块到应用展示、数据分析、机器学习、嵌入式开发等)的系统性学习与认证路线

总目标 学习以华为云物联网为基座的全栈开发&#xff08;从物联网iot平台模块到应用展示、数据分析、机器学习、嵌入式开发等&#xff09;的系统性学习与认证路线。计划包含阶段学习、技术文档、实操实际操作、开发路径与考证规划&#xff0c;提供职业生涯基础性规划。 注意&…...

(LeetCode 每日一题)3170. 删除星号以后字典序最小的字符串(贪心+栈)

题目&#xff1a;3170. 删除星号以后字典序最小的字符串 思路&#xff1a;贪心栈&#xff0c;时间复杂度0(n)。 对于每一个‘ * ’&#xff0c;优先选最右边的最小字符&#xff0c;才会使最终得到的字符串最小。 用栈&#xff0c;来记录每个字符的位置下标。细节看注释。 C版本…...

SQL 基础入门

SQL 基础入门 SQL&#xff08;全称 Structured Query Language&#xff0c;结构化查询语言&#xff09;是用于操作关系型数据库的标准语言&#xff0c;主要用于数据的查询、新增、修改和删除。本文面向初学者&#xff0c;介绍 SQL 的基础概念和核心操作。 1. 常见的 SQL 数据…...

向 AI Search 迈进,腾讯云 ES 自研 v-pack 向量增强插件揭秘

作者&#xff1a;来自腾讯云刘忠奇 2025 年 1 月&#xff0c;腾讯云 ES 团队上线了 Elasticsearch 8.16.1 AI 搜索增强版&#xff0c;此发布版本重点提升了向量搜索、混合搜索的能力&#xff0c;为 RAG 类的 AI Search 场景保驾护航。除了紧跟 ES 官方在向量搜索上的大幅优化动…...

​线性注意力 vs. 传统注意力:效率与表达的博弈新解

​核心结论​&#xff1a;线性注意力用计算复杂度降维换取全局建模能力&#xff0c;通过核函数和结构优化补足表达缺陷 一、本质差异&#xff1a;两种注意力如何工作&#xff1f; ​特性​传统注意力&#xff08;Softmax Attention&#xff09;线性注意力&#xff08;Linear At…...

【Java学习笔记】包装类

包装类&#xff08;Wrapper&#xff09; 1. 介绍 &#xff08;1&#xff09;针对八种基本数据类型相应的引用类型 --> 包装类 &#xff08;2&#xff09;有了类的特点&#xff0c;就可以调用类中的方法 2. 分类和继承关系 基本数据类型包装类父类booleanBooleanObjectc…...

字符串字典序最大后缀问题详解

字符串字典序最大后缀问题详解 一、问题定义与背景1.1 问题描述1.2 实际应用场景 二、暴力解法及其局限性2.1 暴力解法思路2.2 代码示例2.3 局限性分析 三、双指针算法&#xff1a;高效解决方案3.1 算法核心思想3.2 算法步骤3.3 代码实现3.4 与暴力解法对比 四、复杂度分析4.1 …...

Python训练营打卡Day46(2025.6.6)

知识点回顾&#xff1a; 不同CNN层的特征图&#xff1a;不同通道的特征图什么是注意力&#xff1a;注意力家族&#xff0c;类似于动物园&#xff0c;都是不同的模块&#xff0c;好不好试了才知道。通道注意力&#xff1a;模型的定义和插入的位置通道注意力后的特征图和热力图 i…...

吃透 Golang 基础:数据结构之 Map

文章目录 Map概述初始化删除访问不存在的 key 返回 value 的零值遍历 mapmap 自身的零值map 索引时返回的第二个参数使用 map 实现 set Map Hash Map 是无序的 key/value 对集合&#xff0c;其中所有的 key 都是不同的。通过给定的 key 可以在常数时间复杂度内完成检索、更新或…...