使用HttpBuilder解析HTML时接收部分结果

时间:2015-08-24 18:40:59

标签: groovy httpbuilder

当我使用下面的HttpBuilder解析HTML时,我没有收到完整的HTML,就像我在访问该页面并进行检查时所看到的那样。例如,在生成的文件中看不到<img>标记。

@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页面上的图像数量。

1 个答案:

答案 0 :(得分: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
}