Verwenden Sie einfach eine Java -Datei und führen Sie die Hauptmethode aus. Die JAR -Pakete, auf die abhängig ist, sind Com.alibaba.fastjson (Version 1.2.28) und JSOUP (Version 1.10.2)
Wenn Sie POM verwenden, sind die folgenden zwei:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.28</version></dependency><dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.10.2</version></dependency>
Der vollständige Code lautet wie folgt:
Paket com.tuniu.fcm.facade.IPPROXY; Import com.alibaba.fastjson.jsonObject; import org.jsoup.jsoup; java.util.regex.matcher; importieren java.util.regex.pattern; ThreadLocal <list <proxyInfo >> localProxyInfos = new ThreadLocal <list <proxyInfo >> (); public static void main (string [] args) {proxycralWerUnusedVPN proxycrawler = new ProxycralWerUnusedVpn; /*** Die Anzahl der zu erhaltenen Proxy -IPs wird vom Demander angegeben. (Wenn es zu viele gibt, verlangsamt sich die Rückkehr) */ Proxycrawler.StartCrawler (1); } / *** dem Eingang zum externen Modulaufruf ausgesetzt* @Param WantedNumber Die Anzahl der Proxy -IPs, die der Anrufer erwartet,* / public String startCrawler (int whosdnumber) {localWantedNumber.set (suchtnummer); kuaidailicom ("http://www.xicidaili.com/nn/", 15); kuaidailicom ("http://www.xicidaili.com/nt/", 15); kuaidailicom ("http://www.xicidaili.com/wt/", 15); kuaidailicom ("http://www.kuaidaili.com/free/inha/", 15); kuaidailicom ("http://www.kuaidaili.com/free/intr/", 15); kuaidailicom ("http://www.kuaidaili.com/free/outtr/", 15); / *** Returndaten konstruieren*/ proxyresponse response = new ProxyResponse (); response.setsuSccess ("true"); Map <string, object> datainfomap = new HashMap <String, Object> (); datainfomap.put ("numfound", localProxyInfos.get (). size ()); datainFomap.put ("pagenum", 1); Datainfomap.put ("Proxy", LocalProxyInfos.get ()); response.setData (datainFomap); String responstring = jsonObject.tojson (Antwort) .ToString (); System.out.println (Responstring); Return Responstring; } private void kuaidailicom (string baseUrl, int TotalPage) {String ipreg = "//dvere1,3}/./dvera1,3}//./des1,3}//./dverytvere1,3}//./de1,3} // D {1,6}"; Muster ipptn = muster.comPile (IPreg); für (int i = 1; i <TotalPage; i ++) {if (getCurrentProxynumber ()> = localWantedNumber.get ()) {return; } try {document doc = jSoup.Connect (BaseUrl + i + "/") .header ("Accept", "Text/HTML, Anwendung/xhtml + xml, application/xml; q = 0,9, Bild/Webp,*/*; q = 0.8"). "zh-cn, zh; q = 0,8, en; q = 0,6") .header ("cache-control", "max-al-alter = 0). Safari/537.36 ") .Header (" Cookie "," HM_LVT_7ED65B1CC4B810E9FD37959C9BB51B31 = 1462812244; _gat = 1; _ga = ga1.2.1061361361361361361361361361224 "). "www.kuaidaili.com") .Header ("Referer", "http://www.kuaidaili.com/free/outha/") .timeout (30 * 1000) .get (); Matcher m = ipptn.matcher (doc.Text ()); while (m.find ()) {if (getCurrentProxynumber ()> = localWantedNumber.get ()) {break; } String [] strs = m.group (). Split (""); if (checkProxy (STRS [0], Integer.ParseInt (STRS [1])) {System.out.println ("Verfügbar proxy ip/t" + strs [0] + "/t" + strs [1]); AddProxy (STRS [0], STRS [1], "http"); }}} catch (exception e) {e.printstacktrace (); }}} private statische boolean checkProxy (String IP, Integer Port) {try {//http://1212.ip138.com/ic.asp kann durch eine schnellere Webseite jsoup.connect ("http://1212.ip138.com/ic.asp) ersetzt werden. zurückkehren; } catch (Ausnahme e) {return false; }} private int getCurrentProxynumber () {list <ProxyInfo> proxyinfos = localProxyInfos.get (); if (proxyinfos == null) {proxyinfos = new ArrayList <FroxyInfo> (); LocalProxyInfos.set (Proxyinfos); Rückkehr 0; } else {return proxyinfos.size (); }} private void addProxy (String IP, String -Port, String -Protokoll) {list <proxyinfo> proxyinfos = localProxyInfos.get (); if (proxyinfos == null) {proxyinfos = new ArrayList <FroxyInfo> (); proxyinfos.add (neuer Proxyinfo (IP, Port, Protokoll)); } else {proxyinfos.add (neuer Proxyinfo (IP, Port, Protokoll)); }}} class ProxyInfo {private String username = ""; private Zeichenfolge IP; private String password = ""; privater String -Typ; privater String -Port; private int is_internet = 1; public proxyinfo (String IP, String -Port, String -Typ) {this.ip = ip; this.type = Typ; this.port = port; } public String getUnername () {return userername; } public void setUnername (String -Benutzername) {this.username = userername; } public String getiP () {return ip; } public void setIp (String ip) {this.ip = ip; } public String getPassword () {Kennwort zurückgeben; } public void setPassword (String -Passwort) {this.password = password; } public String gettType () {return type; } public void setType (String -Typ) {this.type = type; } public String getPort () {return port; } public void setPort (String -Port) {this.port = port; } public int getisis_internet () {return is_internet; } public void setis_internet (int is_internet) {this.is_internet = is_internet; }} class Proxyresponse {private String Erfolg; private map <String, Objekt> Daten; public String getuccess () {Return Success; } public void setSuccess (String Erfolg) {this.success = Erfolg; } public map <String, Objekt> getData () {returndaten; } public void setData (MAP <String, Objekt> Daten) {this.data = data; }}Das obige Beispiel für Java Proxy Crawling Proxy IP ist der gesamte Inhalt, den ich mit Ihnen geteilt habe. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.