寫個小爬蟲爬下迅雷會員


好久不寫爬蟲。。。忘了個錘子。於是借着學java的機會用java寫個爬蟲
爬取靜態頁面 迅雷會員賬號和密碼。時時獲取最新的~

先上我暑假寫的python版~

# -*- coding: utf-8 -*-
import urllib
import re
import os
url1 = 'http://xlfans.com/'
regex = r'迅雷會員(.+?)密碼(.*)<'
regex1 = r'class="item"><a href="(.+?)">'
ml = 'c:/xunlei.txt'
def get_html(url):
html1 = urllib.urlopen(url)
html = html1.read()
html1.close()
return html
def get_re(html):
xunlei = re.findall(regex,html)
for a in xunlei:
with open(ml,'a') as f:
b = a[0]+' '+a[1]
f.write(b+'\n')
def get_new(html):
new = re.findall(regex1,html)
return new[0]

html= get_html(url1)
url = get_new(html)
new_html = get_html(url)
if os.path.exists(ml):
os.remove(ml)
get_re(new_html)
print 'please look c:/xunlei.txt thankyou!'
print 'newurl= '+url


附一個暑假寫的獲取代理ip的小python代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import urllib2
url1 ='http://www.kuaidaili.com/'#<td data-title="IP">123.182.216.241</td>
html1 = urllib2.urlopen(url1)
html = html1.read()
html1.close()
regexip = r'data-title="IP">(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})'
regexport = r'data-title="PORT">(\d{1,4})'
poxyip = re.findall(regexip,html)
poxyport = re.findall(regexport,html)
for x in range(10):
print poxyip[x]+':'+poxyport[x]


然后~

java版

package com.Recar;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.*;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class pacdemo1 {

public static void main(String[] args) throws IOException {
System.out.println("程序開始....");
String str =newURL();
String url1 =str.replace("class=\"item\"><a href=\"", " ");
String url = url1.replace("\">", " ");
System.out.println(url);
http(url);

}

//抽出來單獨寫個方法返回html的

public static String html(String url1) throws IOException{
URL url = new URL(url1);

URLConnection connection = url.openConnection();

connection.connect();

BufferedReader in = null;

in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));

String result = null;
String line;
while((line=in.readLine())!=null){
result+=line;
}//while

System.out.println("獲取到html....");

return result;
}

/////////////////////////////////////////////////////////////////


//獲取最新的迅雷會員網址

public static String newURL() throws IOException{
String newURL = null;
String result;
result= html("http://xlfans.com");
//result是返回的網頁

String regex ="class=\"item\"><a href=\"(.+?)\">";

Pattern pattern = Pattern.compile(regex);


Matcher matcher = pattern.matcher(result);

System.out.println("開始查找最新迅雷會員網址.....");

if(matcher.find()){


newURL = matcher.group(0);

}

else{System.out.println("sorry,沒有找到,請更新正則"); }


return newURL;
}

/////////////////////////////////////////////////////////////////////////
//獲取網頁,並匹配正則
public static void http(String newurl)throws IOException{
try {
//URL
URL url = new URL(newurl);
String result;
result = html(url.toString());

//result是返回的網頁
//那么做正則 迅雷會員(.+?)密碼(.*)
String regex ="<br />迅雷會員號(.+?)密碼(.*)<br />";

Pattern pattern = Pattern.compile(regex);


Matcher matcher = pattern.matcher(result);


String xunlei = null ;
String xunlei2= null ;
if(matcher.find()){


xunlei = matcher.group(0);
xunlei2= xunlei.replace("<br />", "\n");

System.out.println(xunlei2);
}

else{System.out.println("sorry,沒有找到,請更新正則"); }


} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

}

java版還有問題,總是還有一塊一起匹配出來了。我是個萌新,忘大佬指點啊。java寫爬蟲真心煩啊。Python大法好。

這里寫圖片描述

導出jar 要注意是導出 可執行版的。不是單純的jar文件。

小總結:

java的爬蟲是先用定義URL

    URL  url = new URL("www.baidu.com");

然后打開網址

URLConnection connection = url.openConnection();

connection.connect();

用流來接收html

BufferedReader in = null;

in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));

String result = null;
String line;
while((line=in.readLine())!=null){
result+=line;
}//while

然后用正則匹配,當然還有其他更好的方法~

java寫的像C。。。以后要改。要學習。有空寫動態網頁的爬蟲。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com