论坛首页 综合技术论坛

java爬虫之jsoup的使用

浏览 349 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2023-02-02  
很多小白开始学python的时候都有过这个纠结,这么多语言该如何选择。作为多年爬虫我觉得这个可以没有那么纠结,为什么呢?因为每个人都学习能力不一样,你要是学习能力等方面不行,哪个语言对于你也不简单。
但是关于爬虫语言,我觉得python和Java都是可以直接选的,客观分析,这两种语言都在程序员的工具箱中都占有一席之地。并且入行爬虫大多都是选的python。那这两门语言有区别吗?当然有,对于有一定编程经验的人来说,哪个更顺滑当然能感觉都到。如果你以前从未学过编程,我通常会推荐Java作为第一语言。Python是一种很好的语言,因为python语法比较开放,但是Python隐藏的语法太多,这让新程序员感到困惑。大家都知道jsoup是一款简单好用的页面解析工具,比如下面我们可以使用jsoup做个简单的爬虫,这里我们就以访问百度为例,因为百度是可以爬的,并且反爬机制相对其他网站没有那么严,一般就简单的封IP,那直接加上代理IP就能解决,代码示例如下:
Plain Text
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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 = "username";
    final static String ProxyPass = "password";

    // 代理服务器(产品官网 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 = "http://httpbin.org/ip";


        getUrlProxyContent(targetUrl);
    }
}
在这段代码中我们设置了代理ip,请求头中的user-agent,代理是由亿牛云代理提供的隧道转发,可以应对网站的反爬机制,还有更多的反爬技术和爬虫技术慢慢分享给大家。

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics