好吧,我正在學習網頁搜索並且學習某些東西的最佳方式是通過實際操作。我對Java很滿意,因此我選擇Jsoup,這是一個網絡報廢庫。我計劃刮谷歌,但我知道它的結果source。谷歌搜索的結果似乎很容易,但我發現很難標識所有顯示的內容,這是不可能的,因爲大部分內容都是動態的source,Google通過使用一堆客戶端JavaScript生成頁面。我放棄了搜索導致這裏使用下面的代碼如何在Java中檢索「檢查的源代碼」(Google chrome)?
package JsoupPrac;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class GoogleScrapper {
public static void main(String[] args) throws IOException{
Document doc;
try{
doc = Jsoup.connect("https://www.google.co.in/search?as_q=&as_oq=query&as_eq=&as_nlo=&as_nhi=&lr=lang_en&cr=countryCA&as_qdr=all&as_sitesearch=&as_occt=any&safe=images&tbs=&as_filetype=&as_rights=&gws_rd=cr&ei=4Id1Vs7pC8rQjwOEkbP4CA#lr=lang_en&cr=countryCA&as_qdr=all&tbs=lr:lang_1en%2Cctr:countryCA&q=query")
.userAgent("Mozilla").ignoreHttpErrors(true).timeout(0).get();
Elements links = doc.select("ol[class=g]");
for (Element link : links) {
Elements titles = link.select("h3[class=r]");
String title = titles.text();
Elements bodies = link.select("span[class=st]");
String body = bodies.text();
System.out.println("Title: "+title);
System.out.println("Body: "+body+"\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
因此,與上面的代碼,並與
a[href]迭代有點和尋找
abs:href我能得到的所有URL的名單。
現在我發現的困難是獲取搜索結果頁面上的所有可用內容,該內容在源代碼中不可用,但可以通過inspect元素找到。所以我的問題是,有沒有一種方法(可能是第三方)收集我們在使用Java檢查任何網頁時獲得的所有源代碼。
你確定''所有的源代碼''不是已經從scraping返回?我無法想象爲什麼JSoup會過濾HTML結果中的任何內容。 –
那麼所有的代碼是不可用的,因爲它是由java腳本 – silverFoxA