2015-08-24 1 views
0

Когда я анализирую HTML с HttpBuilder, как показано ниже, я не получаю полный HTML-код, как я вижу, когда я иду на эту страницу и проверяю. Например, тэг <img> не отображается в сгенерированном файле.Получение частичных результатов при анализе HTML с HttpBuilder

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7') 

import groovyx.net.http.HTTPBuilder 
import static groovyx.net.http.Method.GET 
import static groovyx.net.http.ContentType.JSON 
import groovy.json.* 

def http = new HTTPBuilder('http://www.google.com') 
def html = http.get(uri: 'http://www.imdb.com/title/tt2004420/', contentType: groovyx.net.http.ContentType.TEXT) { resp, reader -> 

    def p = new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText(s) 
    new File("/Users/../Documents/temp.txt") << p    
} 

Я ищу, чтобы получить количество изображений на этой странице html путем разбора.

ответ

0

Это происходит потому, что при анализе файла и его отображении отображается только контент - без тегов. После запуска скрипта:

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7') 

import groovyx.net.http.HTTPBuilder 
import static groovyx.net.http.Method.GET 
import static groovyx.net.http.ContentType.JSON 
import groovy.json.* 

def http = new HTTPBuilder('http://www.google.com') 
def html = http.get(uri: 'http://www.imdb.com/title/tt2004420/', contentType: groovyx.net.http.ContentType.TEXT) { resp, reader -> 

    def p = new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText(reader.text) 
    new File("lol") << p    
} 

lol файл содержит, например, следующая строка:

IMDbMoreAllTitlesTV EpisodesNamesCompaniesKeywordsCharactersQuotesBiosPlotsMovies,

который (часть его) выглядит перед разбором:

<div class="quicksearch_dropdown_wrapper"> 
     <select name="s" id="quicksearch" class="quicksearch_dropdown navbarSprite" 
       onchange="jumpMenu(this); suggestionsearch_dropdown_choice(this);"> 
     <option value="all" >All</option> 
     <option value="tt" >Titles</option> 
     <option value="ep" >TV Episodes</option> 
     <option value="nm" >Names</option> 
     <option value="co" >Companies</option> 
     <option value="kw" >Keywords</option> 
     <option value="ch" >Characters</option> 
     <option value="qu" >Quotes</option> 
     <option value="bi" >Bios</option> 
     <option value="pl" >Plots</option> 
     </select> 
    </div> 

Если вы хотите просмотреть теги, используйте следующий скрипт :

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7') 

import groovyx.net.http.HTTPBuilder 
import static groovyx.net.http.Method.GET 
import static groovyx.net.http.ContentType.JSON 
import groovy.json.* 

def http = new HTTPBuilder('http://www.google.com') 
def html = http.get(uri: 'http://www.imdb.com/title/tt2004420/', contentType: groovyx.net.http.ContentType.TEXT) { resp, reader -> 

    new File("lol") << reader.text 
} 
+1

Это не было олве проблема. Я получаю файл 'html'. Я использую этот '@Grab (group = 'org.codehaus.groovy.modules.http-builder', module = 'http-builder', version = '0.7') import groovyx.net.http.HTTPBuilder импорт статический groovyx.net.http.Method.GET импорт статического groovyx.net.http.ContentType.JSON импорта groovy.json. * защиту HTTP = новый HTTPBuilder ('http://www.google.com') def html = http.get (uri: 'http://www.imdb.com/title/tt2004420/', contentType: groovyx.net.http.ContentType.TEXT) {resp, reader -> новый файл (" /Users/../Documents/file1 ") << reader.text }' – user1207289

+1

Фактически, когда я открываю файл с помощью другого текстового редактора, я могу видеть полный html, как в коде. Выше я имел в виду файл с кучей гиперссылок. Так что я думаю, что это сработало. – user1207289

Смежные вопросы