2014-02-24 60 views
-1

我試圖抓取IMDB特色從高級職稱搜索頁面(http://www.imdb.com/search/title?count=250&title_type=feature&view=simple)薄膜多頁之後,這是我的代碼部分:得到錯誤顯示java.lang.NullPointerException爬行

for(int start=1; start < 295378; start+=250) 

    try { 
     String baseUrl = "http://www.imdb.com/search/title?start="+start+";count="+count+"&title_type=feature&view=simple"; 
     org.jsoup.Connection con = Jsoup.connect(baseUrl).userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21"); 
     con.timeout(30000).ignoreHttpErrors(true).followRedirects(true); 
     Response resp = con.execute(); 
     Document doc = null; 
     if (resp.statusCode() == 200) { 
      doc = con.get();          

      Elements myElements = doc.getElementsByClass("results").first().getElementsByTag("table"); 

      Elements trs = myElements.select(":not(thead) tr"); 

一切運作良好,直到編號100239我得到這個錯誤:

java.lang.NullPointerException 
at featuredfilms.cinemamovies.main(cinemamovies.java:44) 

該代碼仍然適用於從1號電影到100238,只是沒有工作後! 赦免如果這是明顯的事情,因爲我是新的爬網和Java。我很感激,如果有人親切地告訴我爲什麼我得到這個錯誤,我該如何解決它?

感謝,

+1

什麼是第44行? – 2014-02-24 21:00:51

+0

嘗試訪問未初始化的內容時拋出NullPointerException。檢查有什麼 –

+1

像imdb這樣的網站通常不喜歡它被抓取。可能他們彈出了一種驗證碼頁面,以避免被輕易抓取。 – donfuxx

回答

1

這可能是一定數量的元素後所返回的DOM結構是從以前的網頁不同,大概是因爲它含有較少的元素。

我建議將此行分解爲單獨的變量和方法調用來追蹤這些鏈接語句中哪些返回null您的情況。

Elements myElements = doc.getElementsByClass("results").first().getElementsByTag("table"); 

也許像這樣的工作(我不知道的類型):

Elements elementsByClass = doc.getElementsByClass("results"); 
Element firstResult = elementsByClass.first(); 
Elements myElements = firstResult.getElementsByTag("table"); 

然後,您可以輕鬆地添加空安全檢查,當你發現了什麼語句在返回null這個案例。

編輯:

如果您查看此鏈接查看當你到最大的數字會發生什麼,它解釋了爲什麼table.results元素不會出現在你的情況:

http://www.imdb.com/search/title?at=0&count=250&sort=moviemeter,asc&start=295250&title_type=feature&view=simple

+0

我做了你說的,現在這個返回null:元素myElements = firstResult.getElementsByTag(「table」); – mOna

+0

我看到了這個URL的頁面的html代碼:http://www.imdb.com/ search/title?start = 100239; count = 250&title_type = feature&view = simple,表格類別=結果與我以前可以抓取的結構相同... – mOna

+0

是的,但是如果您看到此鏈接:http:// www.imdb.com/search/title?at=0&count=250&sort=moviemeter,asc&start=100239&title_type=feature&view=simple有足夠的數據,但仍無法正常工作.. :( – mOna

相關問題