博客專欄

EEPW首頁 > 博客 > python、java爬蟲使用代理的區(qū)別

python、java爬蟲使用代理的區(qū)別

發(fā)布人:laical 時間:2020-11-09 來源:工程師 發(fā)布文章

大數(shù)據(jù)時代下網(wǎng)絡(luò)爬蟲也越來越多,爬蟲目前主要開發(fā)語言為java、Python、c++  對于一般的信息采集需要,各種語言差別不是很大,但是大多數(shù)爬蟲用戶都會選擇python和java開發(fā)語言。

python 爬蟲網(wǎng)絡(luò)功能強大,支持模擬登陸,python寫起程序來真的很便捷

java爬蟲的解析功能非常好

無論是java還是python,基本上爬蟲業(yè)務(wù)需求都滿足,具體看個人爬蟲業(yè)務(wù)需求,選擇適合自己的爬蟲語言。

兩者之間使用爬蟲代理的區(qū)別:

python爬蟲所選框架scrapy:

        class ProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 代理服務(wù)器(產(chǎn)品官網(wǎng) www.16yun.cn)
                proxyHost = "t.16yun.cn"
                proxyPort = "31111"

                # 代理驗證信息
                proxyUser = "username"
                proxyPass = "password"

                request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)

                # 添加驗證頭
                encoded_user_pass = base64ify(proxyUser + ":" + proxyPass)
                request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass                    

                # 設(shè)置IP切換頭(根據(jù)需求)
                tunnel = random.randint(1,10000)
                request.headers['Proxy-Tunnel'] = str(tunnel)

java爬蟲所選框架jsoup:

{
    // 代理驗證信息
    final static String ProxyUser = "username";
    final static String ProxyPass = "password";

    // 代理服務(wù)器(產(chǎn)品官網(wǎng) www.16yun.cn)
    final static String ProxyHost = "t.16yun.cn";
    final static Integer ProxyPort = 31111;

    // 設(shè)置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());
            }
        });
        // 設(shè)置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
        {
            // 處理異常、其他參數(shù)
            Document doc = Jsoup.connect(url).timeout(3000).header(ProxyHeadKey, ProxyHeadVal).proxy(proxy).get();

兩種爬蟲語言使用代理的代碼demo其實是差不多的,由于是不同的語言和框架所以爬蟲程序執(zhí)行的命令是不一樣,需要自己去分析解決。

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞:

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉