2016-04-21 122 views
4

我正在創建一個應用程序,它將使我能夠從特定網站獲取值到控制檯。值是從<span>元素,我正在使用JSoupJava JSoup錯誤提取URL

我面臨的挑戰有此錯誤的事:

Error fetching URL

這裏是我的Java代碼:

public class TestSl { 
    public static void main(String[] args) throws IOException { 
     Document doc = Jsoup.connect("https://stackoverflow.com/questions/11970938/java-html-parser-to-extract-specific-data").get(); 
     Elements spans = doc.select("span[class=hidden-text]"); 
     for (Element span: spans) { 
      System.out.println(span.text()); 
     } 
    } 
} 

這裏是控制檯的錯誤:

Exception in thread "main" org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL= Java Html parser to extract specific data? at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:590) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540) at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227) at org.jsoup.helper.HttpConnection.get(HttpConnection.java:216) at TestSl.main(TestSl.java:19)

什麼時我做錯了,我該如何解決它?

+1

403 Forbidden錯誤是一個HTTP狀態碼,這意味着訪問您嘗試訪問的頁面或資源是絕對禁止的。 – ryekayo

+0

那麼基本上,我沒有辦法獲取這些數據?也許使用一些替代品?或者是服務器/網站不允許任何HTML Phrasers獲取數據? – PICKAB00

+1

不知道該網站是否允許您使用HTML解析器..但最有可能的是,HTML解析器不能使用端口443或80,所以我認爲情況並非如此。可能是你執行代碼的方式.... – ryekayo

回答

5

集的用戶代理報頭:

.userAgent("Mozilla") 

實施例:

Document document = Jsoup.connect("https://stackoverflow.com/questions/11970938/java-html-parser-to-extract-specific-data").userAgent("Mozilla").get(); 
Elements elements = document.select("span.hidden-text"); 
for (Element element : elements) { 
    System.out.println(element.text()); 
} 

Stack Exchange

Inbox

Reputation and Badges

源:https://stackoverflow.com/a/7523425/1048340


也許這是相關的:https://meta.stackexchange.com/questions/277369/a-terms-of-service-update-restricting-companies-that-scrape-your-profile-informa

+0

謝謝。終於工作了。請你詳細說明一下。我哪裏做錯了? – PICKAB00

+0

嗯,我還有一個問題:/ stackoverflow的例子很好。但我有另一個網站,我沒有得到任何結果。我再也看不到這個錯誤了,但是沒有任何價值觀會被傳遞給控制檯。 https://www.binary.com/trading?l=EN 在該頁面中存在這個跨度,它存儲數值。緊靠小圖。班級隨着價值的變化而變化。現在有一個名爲「spot」的ID。我在我的代碼上同時使用了類名和ID,但我在控制檯上沒有得到任何結果。你能提出任何理由嗎? – PICKAB00

+1

也許StackOverflow正在嗅探用戶代理。我知道他們正在積極努力防止網絡濫用。以下是一些很好的建議:https://learn.scrapehero.com/how-to-prevent-getting-blacklisted-while-scraping/ –