java爬虫框架之jsoup的使用

news/2024/7/19 11:23:03 标签: java, 爬虫, python, 经验分享

虽然python爬虫的首要选择语言,但也有一些人会选择使用java,并且对于长期使用java做编程的程序猿应该知道,java支持的爬虫框架还是有很多的,如:ebMagic、Spider、Jsoup等。今天我们就用Jsoup来实现一个小小的爬虫程序,Jsoup作为kava的HTML解析器,可以直接对某个URL地址、HTML文本内容进行解析。
我们可以使用Jsoup快速地掌握爬取页面数据的技巧。 Jsoup如此强大的关键在于Jsoup对常用的api做了很好的封装,并且通俗易懂,小白上手也很快,下面就主要介绍下常用的对象及API, 网络请求,jsoup封装了http请求所涉及的几乎所有api,在Jsoup.connect()方法返回的对象Connection对象中,封装了http请求的常见操作。 比如cookie,IP等。
这里我们要实践的项目是利用Jsoup爬取百度关键词的相关数据,经过简单的分析发现百度还是有些反爬机制的,所以这里我们也可以分享下如何在爬虫程序里面添加爬虫ip进行数据爬取的过程。爬虫程序添加IP是最基本的技术,相对技术来说优质代理IP的选择要有难道些,有太多的代理商,代理我们需要从厂家的IP池大小,IP的延迟高低,访问目标网站速度快慢,抓取数据成功率等多方面进行考察,对很多爬虫工作者来说这很费时间和精力,所以这里推荐亿牛云提供的爬虫隧道代理,经过多年项目使用质量一直稳定,这里我们也分享下通过添加他们的爬虫加强版隧道代理来访问百度的效果,代码实现过程如下:

import java.io.IOException;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;


public class Demo
{
    // 代理验证信息
    final static String ProxyUser = "SWDWFD";
    final static String ProxyPass = "488756";

    // 代理服务器(产品官网 www.16yun.cn)
    final static String ProxyHost = "t.16yun.cn";
    final static Integer ProxyPort = 31111;

    // 设置IP切换头
    final static String ProxyHeadKey = "Proxy-Tunnel";


    public static String getUrlProxyContent(String url)
    {
        Authenticator.setDefault(new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication(ProxyUser, ProxyPass.toCharArray());
            }
        });
        // 设置Proxy-Tunnel
        Random random = new Random();
        int tunnel = random.nextInt(10000);
        String ProxyHeadVal = String.valueOf(tunnel);

        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ProxyHost, ProxyPort));

        try
        {
            // 处理异常、其他参数
            Document doc = Jsoup.connect(url).timeout(3000).header(ProxyHeadKey, ProxyHeadVal).proxy(proxy).get();

            if(doc != null) {
                System.out.println(doc.body().html());
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

        return null;
    }

    public static void main(String[] args) throws Exception
    {
        // 要访问的目标页面
        String targetUrl = "https://www.baidu.com/";


        getUrlProxyContent(targetUrl);
    }
}


http://www.niftyadmin.cn/n/303407.html

相关文章

SpringCloud项目实例3--通信服务负载均衡

只是在pom.xml文件中添加了spring-cloud-starter-loadbalancer依赖并且在RestTemplate类中添加了一个LoadBalance的注解。这就是另外一种负载均衡的实现方案 Spring Cloud LoadBalancer 介绍 这种方案有什么优点呢? 减少整个系统的复杂度,不需要额外部…

springboot与springcloud版本关系,BeanCreationException: Error creating bean with name

添加注解EnableFeignClients后报错: org.springframework.beans.factory.BeanCreationException: Error creating bean with name configurationPropertiesBeans defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertie…

springboot链接redis (Windows版本)

1。 下载链接 https://redis.io/download/ 2.下载完成之后傻瓜安装 3. 打开下载安装路径 3.输入cmd回车 4.依次执行以下命令 redis-server.exe redis-server.exe redis.windows.conf redis-cli shutdown exit redis-server.exe redis.windows.conf 可成功启动redis 5…

Hadoop HDFS的API操作

客户端环境准备 hadoop的 Windows依赖文件夹,拷贝hadoop-3.1.0到非中文路径(比如d:\)。 配置HADOOP_HOME环境变量 配置Path环境变量。 不能放在包含有空格的目录下,cmd 输入hadoop显示此时不应有 \hadoop-3.0.0\bin\。我放在…

2023年适合营销公司使用的十大「社交媒体管理」工具

在遍地都是数字营销公司的时代,对品牌来说,拥有强大的社交媒体影响力以保持竞争力从未如此重要。 而对于管理一个或多个品牌的数字营销公司来说,从内容创作到执行报告,使用正确的工具可以帮助你做到这一点。从规划、管理和跟踪社…

将训练好的模型保存在服务端的三种办法

刚刚在完善我书中第七章案例的文档时,需要将训练好的模型存储在服务端,方便小伙伴们来使用该模型,这里我提供三种办法: 直接从我的个人网站中加载;通过python启动一个文件下载服务器;使用微信小程序云存储…

Python 字典修改对应的键值

将 key ‘1’ 的值 ‘1’, ‘3’, ‘5’ 字符,修改为 ‘2’, ‘4’, ‘5’ 。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单………

vue3项目中使用three.js

vue3项目中使用three.js 前言一、three.js是什么?二、vue3中下载与安装three.js三、操作步骤1.创建场景2.创建物体3.添加光源4.添加相机5.开始渲染 四、myThree.vue源代码五、效果图1.单个模型2.多个模型 总结 前言 在vue3项目中,通过three.js使用了一段…