python、java爬蟲使用代理的區(qū)別
大數(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)系工作人員刪除。