Java爬虫,数据采集经验分享

article/2025/9/4 23:24:20

公司要求我采集网页中的某些数据,以下是我采集的步骤和思路,比较基础。

一.首先我是通过抓取网页源代码的方式,根据源代码,获取各种标签中的数据

public class GetData {//数据抓取核心类// 获取网页数据/** @param url:目标网址** @param encoding:编码*///url抓取数据(参数URL:就是你要抓数据的地址。如:http://www.cnev.cn/)public static String urlClimb(String url) throws Exception{URL getUrl =new URL(url); //创建URl连接HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection(); //建立连接connection.connect(); //打开连接BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8")); //创建输入流并设置编码StringBuffer sb = new StringBuffer();String lines = null;while ((lines = reader.readLine()) != null) {lines = new String(lines.getBytes(), "utf-8"); //读取流的一行,设置编码sb = sb.append(lines + "\n");}reader.close(); //关闭流connection.disconnect(); //销毁连接return sb.toString(); //返回抓取的数据(注意,这里是抓取了访问的网站的全部数据)}
}

 二.通过Jsoup获取标签体内容(以京东为例)

(1)抓取title

(2)抓取标签中文本内容

 (3)抓取所有的a标签中内容

 代码如下

public class Demo {public static void main(String[] args) throws Exception {//第一条抓取title标签String result = GetData.urlClimb("https://www.jd.com/?cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=0f3d30c8dba7459bb52f2eb5eba8ac7d_0_e931e367f5e34e07b1cb328f3bb899df");Document parse = Jsoup.parse(result);Elements title = parse.getElementsByTag("title");String Title = title.toString();System.out.println(Title);//抓“你好,请先登录”Elements login = parse.getElementsByClass("link-login");String Login = login.text();//.text()直接获取标签体中的内容System.out.println(Login);//抓取a标签所有内容Elements style = parse.getElementsByAttributeValue("style", "display:none");String data = style.text();System.out.println(data);//每个抓取到的中间都会有空格,所以直接用String中的split方法,全存入数组,遇到一个空格存一次String[] split = data.split(" ");for (int i=0;i<split.length;i++){System.out.println(split[i]);}}
}

 下面是结果

 有帮助的兄弟们点个赞,一起多交流,我也是小菜鸡一枚,大家一起进步


http://chatgpt.dhexx.cn/article/rbtU1drI.shtml

相关文章

Python爬虫抓取数据时怎么防止ip被封

大数据公司在做数据分析的时候&#xff0c;对目标网站频繁访问很容易触发网站的反爬机制&#xff0c;因此如果想要突破限制只能使用动态ip频繁切换地址模拟真实客户访问网站才能起到防封效果。比如在做数据抓取的时候报错403等限制访问&#xff0c;大概率是因为ip被限。本文总结…

爬虫入门——数据抓取

学习爬虫&#xff0c; 最初的操作便是模拟浏览器向服务器发出请求。使用一下库实现此请求 1.urllib库的使用 urllib 库是Python 内置的HTTP 请求库&#xff0c;包含以下四个模块&#xff1a; 1.request&#xff1a;http请求模块 2.error&#xff1a;异常处理模块 3.parse&#…

ts全局变量定义

参照已有全局变量定义 src/global.d.ts /** Author: hongbin* Date: 2022-10-21 08:49:42* LastEditors: hongbin* LastEditTime: 2022-10-21 09:09:08* Description:全局类型&#xff0c;变量&#xff0c;常量*/ //全局变量 declare let Hong: string; declare const BIN: s…

C++中的全局变量声明和定义

1.全局变量 全局变量在整个源文件的作用域都是有效的&#xff0c;只需要在一个源文件中定义全局变量&#xff0c;在其他不包含全局变量定义的源文件中用extern关键字再次声明这个全局变量即可。 也可以在一个源文件中定义这个全局变量&#xff0c;在头文件中用extern关键字再…

c语言全局变量(c语言全局变量怎么定义)

菜鸟提问:GCCE编译环境下&#xff0c;汇编函数如何使用C全局变量汇编化了 首先要在C程序中用extern申明该变量为全局变量&#xff0c;再在汇编程序中用extern "变量名"来导入&#xff0c;注意&#xff0c;汇编中如果直接使用"mov eax,变量名"表示的是将该变…

C++全局变量的声明和定义

参考&#xff1a; http://wrchen.blog.sohu.com/71617539.html &#xff08;1&#xff09;编译单元&#xff08;模块&#xff09; 在VC或VS上编写完代码&#xff0c;点击编译按钮准备生成exe文件时&#xff0c;编译器做了两步工作&#xff1a; 第一步&#xff0c;将每个.cpp(.c…

【Vue】全局变量的定义及使用

首先声明Vue使用全局变量的方法有很多&#xff0c;以下只是个人觉得比较简洁的2种。其中两者的第一步操作相同&#xff0c;即&#xff1a; 创建全局变量文件Global.vue&#xff0c;内容如下&#xff1a; <script>const name ZhangSan; //名称const address No.20, Ta…

VC++中全局变量的问题(转)

全局变量一般这样定义&#xff1a;1。在一类的.cpp中定义 int myInt;然后再在要用到的地方的.cpp里extern int myInt&#xff1b;这样就可以用了。 2。在stdafx.cpp中加入:int myInt;然后在stdafx.h中加入:extern int myInt这样定义以后无论在什么文件中都是可见的. 3。比较规…

LINUX c语言 定时显示CPU,内存和硬盘的使用率

/* 写在完成后&#xff0c;查找了很多资料&#xff0c;看到了很多方法&#xff0c;也看了部分top的源码&#xff0c;最终选择了这几种混合的方式来写&#xff0c;可能有更优解&#xff0c;不过目前这样应该够用。 --2020/12/15-- Simon */需求&#xff1a;定期获取CPU&#x…

crontab做系统定时任务命令

crontab做系统定时任务命令&#xff1a; 给系统设置一个定时的任务&#xff0c;相当于一个闹钟 我们每天的0点去做一些清理工作&#xff0c;自检工作&#xff0c;重要数据存盘备份工作&#xff0c;一个组里面很多同时都在提交代码&#xff0c;git作为代码管理工具&#xff0c;每…

c语言如何让函数一直执行,C语言如何实现在每天某个特定时间执行某个函数?

慕仙森 Windows提供了定时器&#xff0c;帮助编写定期发送消息的程序。定时器一般通过一下两中方式通知应用程序间隔时间已到。⑴ 给指定窗口发送WM_TIMER消息&#xff0c;也就是下面的给出在窗口类中使用的方法。⑵ 调用一个应用程序定义的回调函数&#xff0c;也就是在非窗口…

HashedWheelTimer时间轮定时任务原理分析

一、示例代码 HashedWheelTimer时间轮是一个高性能&#xff0c;低消耗的数据结构&#xff0c;它适合用非准实时&#xff0c;延迟的短平快任务&#xff0c;例如心跳检测。 时间轮是一种非常惊艳的数据结构。其在Linux内核中使用广泛&#xff0c;是Linux内核定时器的实现方法和基…

SpringMVC中定时任务配置

在项目中使用定时任务是常有的事&#xff0c;比如每天定时进行数据同步或者备份等等。 以前在从事C语言开发的时候&#xff0c;定时任务都是通过写个shell脚本&#xff0c;然后添加到linux定时任务中进行调度的。 现在使用SpringMVC之后&#xff0c;一起都变得简单了o(∩_∩)…

c语言1.5秒定时程序,C语言实现简单的定时器

本文实例为大家分享了C语言实现简单的定时器的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 1.代码分析 2.代码 #include #include #include #ifndef CLOCKS_PER_SEC #define CLOCKS_PER_SEC 1000 #endif int main( void ) { clock_t start; long count 1; sta…

c语言自动执行一分钟,C语言操作时间函数,实现定时执行某个任务的小例子

https://m.toutiao.com/is/JcccKk6/ 时间操作函数在实际项目开发中会经常用到&#xff0c;最近做项目也正好用到就正好顺便整理一下。 时间概述 由上图可知&#xff1a;通过系统调用函数time()可以从内核获得一个类型为time_t的1个值&#xff0c;该值叫calendar时间&#xff0c…

C语言实现任务调度与定时器

代码实现是在xl2tpd的源码中get到的&#xff0c;感觉很有意思的一段代码。基本功能就是实现定时器&#xff0c;时间到后从定时队列中取出&#xff0c;然后完成指定的任务。 1. schedule.c代码(自己添加了main函数&#xff0c;用来调试) /** Layer Two Tunnelling Protocol Da…

c语言 精确定时程序,微调定时精确时间

1.定时器&蜂鸣器 一般定时器中断函数里的内容最好是能够快速地去执行完,比如只执行几条简单的语句,这样与主函数配合才会使程序更加高效。前期教学里,我们只使用定时器中断负责某个IO引脚间隔跳变或者使一个变量间隔自加1的简单语句。 比如我们现在要实现间隔50ms左右的…

c语言实现任务调度器

一、介绍 调度器是常用的一种编程框架&#xff0c;也是操作系统的拆分多任务的核心&#xff0c;比如单片机的裸机程序框架&#xff0c;网络协议栈的框架如can网关、485网关等等&#xff0c;使用场合比较多&#xff0c;是做稳定产品比较常用的编程技术 二、原理 1、超级循环 v…

C语言定时1分钟程序,C语言操作时间函数,实现定时执行某个任务小程序

时间操作函数在实际项目开发中会经常用到,最近做项目也正好用到就正好顺便整理一下。 时间概述 由上图可知:通过系统调用函数time()可以从内核获得一个类型为time_t的1个值,该值叫calendar时间,即从1970年1月1日的UTC时间从0时0分0妙算起到现在所经过的秒数。而该时间也用于…

vivado 2018.2官方下载

前几天想装vivado&#xff0c;奈何学长给的文件安装出了点问题&#xff0c;百度网盘下载20g又太慢&#xff0c;去官网看了一下&#xff0c;发现官网的安装器挺小的。 下载地址&#xff1a;https://china.xilinx.com/support/download.html 需要再注册一下就好。 之后的安装步骤…