如何使用Java爬取指定链接的网页内容

news2024/11/29 4:45:37

01012-4020191696-_modelshoot style,a girl on the computer, (extremely detailed CG unity 8k wallpaper), full shot body photo of the most beautiful.png
在当今信息时代,互联网上的数据量庞大且不断增长。为了获取特定网页的内容,爬虫技术成为了一种非常有用的工具。本文将介绍如何使用Java编程语言来实现爬取指定链接的网页内容。
首先,我们需要准备好Java开发环境。确保你已经安装了Java Development Kit(JDK)并配置好了环境变量。接下来,我们将使用Java提供的一些库来实现爬虫功能。
Java提供了许多用于网络通信的库,其中最常用的是HttpURLConnection和HttpClient。在本文中,我们将使用HttpURLConnection来进行示范。
在如何使用Java爬取指定链接的网页内容时我们需要解决以下几个问题:

  1. 如何发送HTTP请求获取网页内容?
  2. 如何处理代理信息以绕过反爬虫机制?
  3. 如何解析HTML源代码以提取有用的信息?

首先是发送HTTP请求获取网页内容: 我们可以使用Java的HttpURLConnection类来发送HTTP请求,并获取网页内容。以下是示例代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class WebCrawler {
    public static void main(String[] args) throws IOException {
        String url = "https://www.zhipin.com/";
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("GET");

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuilder content = new StringBuilder();
        while ((inputLine = in.readLine()) != null) {
            content.append(inputLine);
        }
        in.close();

        System.out.println(content.toString());
    }
}

其次是处理代理信息以绕过反爬虫机制: 如果目标网站采取了反爬虫机制,我们可以使用代理服务器来隐藏我们的真实IP地址。以下是示例代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.URL;

public class WebCrawler {
    public static void main(String[] args) throws IOException {
        String proxyHost = "www.16yun.cn";
        String proxyPort = "5445";
        String proxyUser = "16QMSOML";
        String proxyPass = "280651";

        Authenticator.setDefault(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(proxyUser, proxyPass.toCharArray());
            }
        });
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new URL("http", proxyHost, Integer.parseInt(proxyPort), ""));

        String url = "https://www.zhipin.com/";
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection(proxy);
        con.setRequestMethod("GET");

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuilder content = new StringBuilder();
        while ((inputLine = in.readLine()) != null) {
            content.append(inputLine);
        }
        in.close();

        System.out.println(content.toString());
    }
}

最后解析HTML源代码以提取有用的信息: 我们可以使用Jsoup库来解析HTML源代码,并提取其中的有用信息。以下是示例代码:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;

public class WebCrawler {
    public static void main(String[] args) throws IOException {
        String url = "https://www.zhipin.com/";
        Document doc = Jsoup.connect(url).get();

        Elements jobElements = doc.select(".job-list li");
        for (Element jobElement : jobElements) {
            String jobTitle = jobElement.select(".job-title").text();
            String jobCompany = jobElement.select(".company-text .name").text();
            System.out.println("职位:" + jobTitle);
            System.out.println("公司:" + jobCompany);
            System.out.println("--------------------");
        }
    }
}

当程序运行时,它将输出响应代码和响应内容。你可以根据自己的需求对响应内容进行进一步处理,例如提取特定的数据或者保存到本地文件中。

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

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

相关文章

全新运营策略+针对性落地方案,尖庄·荣光成都战略高地市场打造范式“曝光”

执笔 | 姜 姜 编辑 | 萧 萧 9月19日,“百年尖庄 荣光征程”尖庄荣光上市会成都站在成都举行,现场超600位成都各区县优质经销商、终端商共同举杯尖庄荣光,品味香飘百年的匠心味道。 长江酒道注意到,此次发布会是川渝地区首场…

《Web安全基础》08. 漏洞发现

web 1:漏洞发现1.1:操作系统1.2:WEB 应用1.3:APP 应用1.4:API 接口 & 系统端口1.4.1:API 关键字1.4.2:服务&端口1.4.3:相关资源 2:总结 本系列侧重方法论&#x…

Redis 面试常见问答

本文出自:https://thinkinjava.cn 作者:莫那 鲁道 1. 什么是缓存雪崩?怎么解决? 一般而言,我们会利用缓存来缓冲对数据库的冲击,假如缓存无法正常工作,所有的请求便会直接发送至数据库&#xf…

Rust踩雷笔记(7)——两个链表题例子初识裸指针

目录 leetcode 234leetcode 19 leetcode 234 题目在这https://leetcode.cn/problems/palindrome-linked-list/,leetcode 234的回文链表,思路很简单,就是fast和slow两个指针,fast一次移动两个、slow一次一个,最后slow指…

2023年华数杯数学建模A题隔热材料的结构优化控制研究解题全过程文档及程序

2023年华数杯全国大学生数学建模 A题 隔热材料的结构优化控制研究 原题再现: 新型隔热材料 A 具有优良的隔热特性,在航天、军工、石化、建筑、交通等高科技领域中有着广泛的应用。   目前,由单根隔热材料 A 纤维编织成的织物,…

这可是网络工程师零基础学习路线最完整,最详细的版本,没有之一

文章篇幅较长,耐心看完你一定有所收获。 相比IT类的其它岗位,网络工程师的学习方向是比较明亮的。想要成为网络工程师,华为认证就是最好的学习方法。而网络工程师的从零开始学习就是从华为认证的初级开始学起,也就是HCIA&#xff…

【Linux基础】第28讲 Linux Vi编辑器

在Linux下一班使用Vi编辑器来编辑文件vi既可以查看文件也可以编辑文件而vim是vi的升级版本,具备更多的功能。vi如果目标文件不存在,会创建新的文件。但如果新文件没做编辑,退出后还会消失。 VI的三种模式介绍 三种模式(状态&…

rv1126-rv1109-NFS功能

//adb可以直接放,优先使用,nfs是另一种调试方法 adb push E:\111\RkLunch.sh /data//放进data文件夹 / 打开Network File Systems </

常见web漏洞原理整理

文章目录 一、SQL注入1.1SQL注入漏洞原理1.2 SQL注入的两个关键点1.3 与Mysql注入相关的知识点1.4 SQL注入的主要分类1.5 SQL注入的流程1.5.1 普通SQL注入1.5.2 盲注 1.6 SQL注入总结 二、文件上传2.1 文件上传漏洞原理2.2 客户端检测及绕过&#xff08;JS检测与绕过&#xff0…

虹科CiA演讲回顾 | CAN(FD)总线协议转换原理及其在汽车行业的应用

2023年9月14日&#xff0c;CiA中国技术日直播活动在线上举行&#xff0c;该活动致力于开展与CAN总线相关领域的技术工作&#xff0c;演讲者都是CAN领域的专家。虹科首席工程师陈皓受邀参与活动&#xff0c;并带来以“CAN和CAN FD总线协议转换”为主题的演讲。 本次演讲内容主要…

【完美世界】烧烤小队!天元甲胄,石昊铭刻万灵图,斩杀仙殿传人

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析完美世界。 完美世界动画最新集预告更新了&#xff0c;天元秘境的最高殿堂正式开启&#xff0c;里面有无数珍宝&#xff0c;更有无上传承&#xff0c;于是又将是一场腥风血雨的争夺战。尤其是魔王荒与仙殿传人的终极决战&…

2D游戏开发和3D游戏开发有什么不同?

2D游戏开发和3D游戏开发是两种不同类型的游戏制作方法&#xff0c;它们之间有一些显著的区别&#xff1a; 1. 图形和视觉效果&#xff1a; 2D游戏开发&#xff1a; 2D游戏通常使用二维图形&#xff0c;游戏世界和角色通常在一个平面上显示。这种类型的游戏具有平面的外观&…

Docker文档阅读笔记-How to Commit Changes to a Docker Image with Examples

介绍 在工作中使用Docker镜像和容器&#xff0c;用得最多的就是如何提交修改过的Docker镜像。当提交修改后&#xff0c;就会在原有的镜像上创建一个新的镜像。 本博文说明如何提交一个新的Docker镜像。 前提 ①有一个可以直接访问服务器的运行终端&#xff1b; ②帐号需要r…

10.模板方法模式

模板方法模式&#xff0c;定义一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 一 模板方法模式练习-试卷 UML图 测试代码 #include <iostream> using namespace std;class T…

红帽社区论坛

https://access.redhat.com/ https://access.redhat.com/ 是红帽公司的官方网站&#xff0c;提供了许多与红帽企业级Linux发行版及其他开源软件相关的服务和资源。以下是该网站的一些主要功能&#xff1a;文档和知识库&#xff1a;提供了关于红帽产品的详细文档、手册、技术文章…

Blender 学习笔记(一)

文章目录 视图的移动右侧小键摄像机跟随调整摄像机的窗口比例当前角度变成拍摄视角视图&#xff08;正视图&#xff0c;顶视图&#xff0c;侧视图&#xff09;物体的对焦物体的移动&#xff0c;旋转&#xff0c;放大与缩小加选框选全选添加物体物体删除 视图的移动 shift 鼠标…

JavaScript之观察者模式

本文作者为 360 奇舞团前端开发工程师 概述 在日常开发中&#xff0c;开发人员经常使用设计模式来解决软件设计中的问题。其中&#xff0c;观察者模式是一种常用的模式&#xff0c;它可以帮助开发人员更好地处理对象之间的通信。在 JavaScript 中&#xff0c;观察者模式的应用非…

关于第一届全球电子纸创新应用金奖征集评选及报名指南

重要通知 &#xff5c;关于第一届全球电子纸创新应用金奖征集评选及报名指南https://mp.weixin.qq.com/s/RWsZtmJ20-NZXMG0k0rwPA?wxwork_useridEPIA 从2004年&#xff0c;Sony推出全球首款电纸书阅读器至今20载&#xff0c;这期间&#xff0c;到底诞生了多少种创新产品&#…

国外访问学者面签需要注意什么?

国外访问学者面签是前往国外进行学术研究或合作的关键一步&#xff0c;因此需要谨慎准备。以下是知识人网小编整理的一些需要注意的重要事项&#xff0c;以确保面签顺利进行&#xff1a; 1.签证申请材料准备&#xff1a;首先&#xff0c;要仔细阅读所申请国家的签证要求&#x…

【Git】02-Git常见应用

文章目录 1. 删除不需要分支2. 修改最新Commit的Message3. 修改之前Commit的Message4. 连续多个Commit整理为一个5. 不连续的Commit整理为一个6. 比较暂存区和HEAD中文件差异7. 比较工作区和暂存区中文件差异8. 将暂存区恢复为HEAD相同9. 工作区文件恢复和暂存区相同10. 取消暂…