[英]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 庫,例如OkHttp和AsyncHttpClient 。
但值得記住的是,亞馬遜可能不喜歡人們抓取其網站,並且會內置檢測惡意或不需要的活動。 它可能是故意向您發送胡言亂語以阻止您繼續。 您應該小心,因為一些大網站可能會暫時或永久封鎖您的 IP。
我的建議是學習如何使用亞馬遜 API。 它們非常強大 - 你不會被禁止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.