我一直在嘗試從hidemyass獲取代理時遇到問題。我想知道是否有人既可以告訴我,我做錯了或者給我固定的方式如下:從Java網站抓取代理?
public void loadProxies()
{
proxies.clear();
String html = null;
String url = "http://hidemyass.com/proxy-list/";
int page = 1;
Pattern REPLACECRAP = Pattern.compile("<(span|div) style=\"display:none\">[\\s\\d\\s]*</(span|div)>");
while (page <= this.pages) {
status = "Scraping Proxies " + page + "/40";
try {
html = Jsoup.connect(url + page).get().html();
org.jsoup.select.Elements ele = Jsoup.parse(html).getElementsByAttributeValueMatching("class", "altshade");
for (Iterator localIterator = ele.iterator(); localIterator.hasNext();) {
Object s = localIterator.next();
org.jsoup.select.Elements ele1 = Jsoup.parse(s.toString()).children();
String text = ele1.toString().substring(ele1.toString().indexOf("</span>"), ele1.toString().indexOf("<span class=\"country\""));
org.jsoup.select.Elements ele2 = Jsoup.parse(text).children();
Matcher matcher = REPLACECRAP.matcher(ele2.toString());
String better = matcher.replaceAll("");
ele2 = Jsoup.parse(better).children();
String done = ele2.text();
String port = done.substring(done.lastIndexOf(" ") + 1);
String ip = done.substring(0, done.lastIndexOf(" ")).replaceAll(" ", "");
proxies.add(ip + ":" + port);
}
page++;
} catch (Exception e) {
e.printStackTrace();
}
}
}
這不會從該網站獲得代理的某部分,雖然這似乎是混合位一起這樣:
PROXY:98210.285995154180237.6396219.54:3128
PROXY:58129158250.246.179237.4682139176:1080
PROXY:5373992110205212248.8199175.88107.15141185249:8080
PROXY:34596887144221.4.2449100134138186248.231:9000
這些都是我運行上述代碼時得到的一些結果^。當我想要的東西PROXY:210:197:182:294:8080
任何幫助,這將不勝感激。
你可能舉出一個這樣的例子。謝謝。 – user2826304
如果你想走這條路,你將不得不自己去做。這樣做顯然違背了網站的意願(爲什麼他們會這麼做呢?)。他們甚至每天一次提供他們[整個數據庫]的可解析文本副本(http://hidemyass.com/proxy-list/premium/),(我認爲)是25美元的非常小的一次性成本。 – Phylogenesis