3

我需要提取我在 groovy 中使用 HTTPuilder 的网页的 HTML,得到以下内容:

def http = new HTTPBuilder('http://www.google.com/search')
http.request(Method.GET) {
 requestContentType = ContentType.HTML
 response.success = { resp, reader ->
  println "resp: " + resp
  println "READER: " + reader
 }
 response.failure = { resp, reader ->
  println "Failure"
 }
}

我得到的响应不包含我在探索 www.google.com/search 的 html 源时可以看到的相同 html。事实上,它既不是 html,也不包含我可以在页面的 html 源代码中看到的相同信息。我试过设置不同的标题(例如,headers.Accept = 'text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8', headers.Accept = 'text/html' ,设置用户代理等),但结果是一样的。如何使用 http builder 获取 www.google.com/search(或任何网页)的 html?

4

2 回答 2

0

因为 httpbuilder 会根据内容类型自动解析结果。要获取原始 html,请尝试从实体获取文本

def htmlResult = http.get(uri: url, contentType: TEXT){ resp->
    return resp.getEntity().getContent().getText()
}
于 2013-01-16T05:07:38.397 回答
0

为什么使用 httpBuilder?您可以改为使用

def url = "http://www.google.com/".toURL() 

println url.text`

提取网页内容

于 2011-08-22T08:11:02.610 回答