Java用Jsoup库实现的多线程爬虫代码

news2024/10/6 10:39:27

因为没有提供具体的Python多线程跑数据的内容,所以我们将假设你想要爬取的网站是一个简单的URL。以下是一个基本的Java爬虫程序,使用了Jsoup库来解析HTML和爬虫ip信息。

在这里插入图片描述

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.Properties;

public class Spider {
    public static void main(String[] args) {
        try {
            // 创建一个URL对象
            URL url = new URL("目标网站");
            // 创建一个HttpURLConnection对象并设置爬虫ip信息
            connection = new URL(url.toString()).openConnection();
            connection.setRequestProperty("ProxyHost", "duoip");
            connection.setRequestProperty("ProxyPort", "8000");
            // 打开连接并获取响应码
            int responseCode = connection.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                // 创建一个Document对象来解析HTML
                Document document = Jsoup.connect(url.toString()).get();
                // 获取所有的链接
                Elements links = document.select("a[href]");
                // 遍历所有的链接并打印
                for (Element link : links) {
                    System.out.println(link.absUrl("href"));
                }
            } else {
                System.out.println("Failed to connect");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

每行代码和步骤的解释如下:

1、创建一个URL对象,表示要爬取的网站的URL。

2、创建一个HttpURLConnection对象。HttpURLConnection是Java中用于发起HTTP请求的接口。我们通过这个接口来设置爬虫ip信息。

3、设置爬虫ip信息。我们通过setRequestProperty()方法来设置爬虫ip信息。这个方法接受两个参数:要设置的请求头的名称和值。

4、打开连接并获取响应码。我们通过get()方法来获取响应码。如果响应码是200,表示请求成功。

5、创建一个Document对象来解析HTML。我们通过get()方法来获取Document对象。

6、获取所有的链接。我们通过select(“a[href]”)方法来获取所有的链接。

7、遍历所有的链接并打印。我们通过for-each循环来遍历所有的链接,然后打印每个链接的绝对URL。

8、如果连接失败,打印错误信息。

注意:在实际使用中,你需要根据具体的网站和爬取的内容来修改代码。此外,爬虫程序可能会被网站封禁,因此你需要遵守网站的robots.txt文件,并遵守相关的法律法规。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1189129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 入门案例剖析

vscode 启用open with live server功能,配置谷歌浏览器chrome_小头猿的博客-CSDN博客 之所以使用vue就是想让其帮我们构建页面,构建出来了页面但是摆在那个位置呢?所以得准备好一个容器,最起码得有东西去承接这个界面。 控制台这…

谷歌插件报错 Manifest version 2 is deprecated, and support will be removed in 2023.

点开错误发现 高亮部分有问题。 下面是这个插件的解压后的原始包:我们主要就去找json结尾的东西 就这两个 一个个排除 找到了 把2 改成3就可以了 一定要记得保存!!!!!!!&#xff0…

大口径智能水表支持最高水流量是多少?

随着科技的不断发展,我国城市化进程的加快,水资源管理日益受到重视。作为一种先进的用水计量设备,大口径智能水表凭借其高精度、低误差、远程抄表等优点,在市场上备受青睐。那么接下来,小编就来为大家详细的介绍一下大…

Debian12换镜像源

0 背景 用docker运行了一个node容器,发现连vim也没有,所以打算安一个vim 1 查看操作系统 find / -name *release* #查看release信息2 更换镜像源 2.1 从网上找个国内镜像源 确定好操作系统版本后,从网上搜一下对应的数据源。这里提供一个…

全景房屋装修vr可视化编辑软件功能及特点

VR样板间、VR景观、VR商业街,全方位展示建筑内外空间使用及功能表現,让目标客戶能够身临其境体验項目的每处细节。 同时支持微信传播,线上看房,手机端VR沉浸式体验 3D互动售楼系统 3D互动售楼系统,集项目展示、智能选房…

C语言--汉诺塔【内容超级详细】

今天与大家分享一下如何用C语言解决汉诺塔问题。 目录 一.前言 二.找规律⭐ 三.总结⭐⭐⭐ 四.代码实现⭐⭐ 一.前言 有一部很好看的电影《猩球崛起》⭐,说呀,人类为了抗击癌症发明了一种药物🍗,然后给猩猩做了实验&#xff0…

js堆栈函数及断点调试(简单使用,仅供自己参考)

第一步打开调试面板点击源代码tab再点击webpack找到自己写的代码(以vue项目为例,构建完后的项目是不能调试的) 第二步在你需要调试的地方点击一下卡个点,如上图所示,然后刷新网页 第三步,点击调试操作箭头…

商人宝:新版收银系统比传统的收银机有哪些优势

新版收银系统凭借安装迅速、使用便捷、升级省心等特点,正逐步替换掉传统的安装下载的C/S架构的收银系统。今天,小编为大家分享新版收银系统对比传统收银机的三大优势。欢迎大家点赞关注,以及收藏本文章,以便后续多了解。 一是网页…

华为两大旗帜性人物相继发声!透露出哪些重要信息?

近几年,“算力”一词越来越频繁地出现在我们的视野中,随着数字化与智能化进程的加快,对于算力的要求越发迫切。 不知道朋友们有没有关注到,近日华为两大旗帜性人物,在短时间内也相继谈及算力...... 01 、华为持续加码…

这8个图片素材库,真的免费下载,4K无水印

不会还有人不知道去哪里下载高质量图片素材吧,给大家推荐8个网站,免费下载,以后的图片素材都不用愁了,赶紧收藏起来! 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYxMjky 一个很大的素材库,站内主…

数字政府!3DCAT实时云渲染助推上海湾区数字孪生平台

数字孪生,是一种利用物理模型、传感器数据、运行历史等信息,在虚拟空间中构建实体对象或系统的精确映射,从而实现对其全生命周期的仿真、优化和管理的技术。数字孪生可以应用于各个领域,如工业制造、智慧城市、医疗健康、教育培训…

Linux-命令行命令

注:[]的内容说明是可选的 1.ls ls [-a -l -h] [Linux路径] >如果没有参数,就展示当前工作目录的内容 > -a:all的意思,即列出所有文件(包含隐藏文件/文件夹) > -l:以列表形式展示内容&…

怎么建模HEC-RAS【案例-利用HEC-RAS分析河道建筑对洪水管控的作用】 洪水计算、堤防及岸坡稳定计算、冲淤分析、壅水计算、冲刷计算、水工构筑物建模

背景介绍 人口数量的增长、不合理的区域规划和无计划的工程实践,让洪水对于人类而言变得极具风险。 为了最大程度地减少洪水造成的损害,采取管控措施往往需要在初期执行,为了研究这些管控措施,需要确定河段桥梁和作为调节的水利设…

基于springboot实现福聚苑社区团购平台系统项目【项目源码】计算机毕业设计

基于springboot实现福聚苑社区团购平台系统演示 Javar技术 Java是一种网络脚本语言,广泛运用于web应用开发,可以用来添加网页的格式动态效果,该语言不用进行预编译就直接运行,可以直接嵌入HTML语言中,写成js语言&…

畜牧猪舍养殖成功 管理效率提高的背后原因

畜牧养猪远程监控方案 畜牧养猪物联网远程监控方案其目的是为了提高养猪场的管理效率,降低生产成本,提高猪肉质量和养殖安全。现有的方案通常包括传感器和无线网络设备,这些设备可以监测养猪场的温度、湿度、气体浓度、环境光照等指标&#…

【bug】vue create 项目名,bash: vue: command not found

创建项目的时候,报bash: vue: command not found 一步一步排查 1、node是否安装,node -v 2、不是node的问题,试试npm install -g vue/cli,安装脚手架,其实这里是正在安装的意思,但是速度比较慢&#x…

物联网水表电子阀工作原理是怎样的?

随着科技的不断发展,物联网技术逐渐深入到我们的生活之中。作为智能家居的重要组成部分,物联网水表电子阀凭借其智能化、节能环保等优势,受到了越来越多用户的青睐。接下来,合众小编将来为大家介绍下物联网水表电子阀工作原理。 一…

载波通讯电表的使用年限是多久?

随着科技的飞速发展,智能家居、物联网等概念逐渐深入人心,载波通讯电表作为一种新型的智能电表,凭借其低功耗、高可靠性、远程通讯等优点,广泛应用于居民用电、工业生产等领域。那么,载波通讯电表的使用年限是多久呢&a…

【第2章 Node.js基础】2.4 Node.js 全局对象...持续更新

什么是Node.js 全局对象 对于浏览器引擎来说,JavaScript 脚本中的 window 是全局对象,而Node.js程序中的全局对象是 global,所有全局变量(除global本身外)都是global 对象的属性。全局变量和全局对象是所有模块都可以调用的。Node.is 的全局…

split() 函数实现多条件转为数据为数组类型

使用 split() 函数并传递正则表达式 /[,;.-]/ 作为分隔符来将字符串按照逗号、分号和破折号进行拆分,并将结果赋值给 splitArray 数组。下面是一个示例代码: 在上面的示例中,我们使用 split() 函数将 inputString 字符串按照逗号、分号和破折…