簡體   English   中英

獲取亞馬遜頁面和產品信息的最佳方式

[英]Best way to get Amazon page and product information

我想從他們的網站上獲取亞馬遜頁面和產品信息,所以我在未來的項目中工作。 我沒有使用 API 的經驗,但也看到我需要付費才能使用亞馬遜的。 我目前的計划是使用一個 WebRequest 類,它基本上取下頁面的原始文本,然后解析它以獲得我需要的內容。 它從我嘗試過的所有網站中提取 HTML,除了亞馬遜。 當我嘗試將它用於亞馬遜時,我收到這樣的文字...

???èv~-1?½d!Yä90û?¡òk6??ªó?l}L???A?{í??j?ì??ñF Oü?ª[D ú7W¢!?É?L?] â v??ÇJ???t?ñ?j?^,Y£>O?|?I`OöN??Q?»​​bÇJPy1·¬Ç??RtâU??Q%vB??^íè|?? ✪?

有人可以向我解釋為什么會發生這種情況嗎? 或者甚至更好,如果你能指出我這樣做的更好方法? 任何幫助表示贊賞。

這是我提到的課程...

公共類 WebRequest {

protected String url;
protected ArrayList<String> pageText;

public WebRequest() {
    url = "";
    pageText = new ArrayList<String>();
}

public WebRequest(String url) {
    this.url = url;
    pageText = new ArrayList<String>();
    load();
}

public boolean load() {
    boolean returnValue = true;

    try {
        URL thisURL = new URL(url);
        BufferedReader reader = new BufferedReader(new InputStreamReader(thisURL.openStream()));

        String line;
        while ((line = reader.readLine()) != null) {
            pageText.add(line);
        }
        reader.close();
    }
    catch (Exception e) {
        returnValue = false;
        System.out.println("peepee");
    }

    return returnValue;
}

public boolean load(String url) {
    this.url = url;
    return load();
}

public String toString() {
    String returnString = "";
    for (String s : pageText) {
        returnString += s + "\n";
    }

    return returnString;
}

}

可能是使用與平台默認值不同的字符編碼返回頁面。 如果是這種情況,您應該指定適當的編碼,例如:

new InputStreamReader(thisURL.openStream(), "UTF-8")

但這些數據對我來說根本不像字符數據。 太隨意了。 它看起來像二進制數據。 您確定您沒有錯誤下載圖像嗎?

如果你想發出更復雜的 HTTP 請求,有很多 Java 庫,例如OkHttpAsyncHttpClient

但值得記住的是,亞馬遜可能不喜歡人們抓取其網站,並且會內置檢測惡意或不需要的活動。 它可能是故意向您發送胡言亂語以阻止您繼續。 您應該小心,因為一些大網站可能會暫時或永久封鎖您的 IP。

我的建議是學習如何使用亞馬遜 API。 它們非常強大 - 你不會被禁止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM