Rails Nokogiri html 解析

Rails Nokogiri html parsing

我的 aws-lambda 函数如下所示,它 returns html 内容。 导入 urllib2 导入 json

def lambda_handler(event, context):
    # TODO implement

    req_url = event['url']
    header = {"User-Agent" : 'Mozilla/5.0'}
    response = ""
    try:
        request = urllib2.Request(req_url, headers=header)
        response = urllib2.urlopen(request).read()
    except:
        response = "404 called"
    return response

然后我在 Rails

中解析了这个
resp = lambda.invoke(function_name: 'lambda_crawl', payload: s )
content = resp['payload'].read 
content_get = Nokogiri::HTML(content)

但是,在content_get中,有一些难以理解的编码问题。 <li class='\"rank01\"'> 如果打印 content_get 它显示为这样 at_cssxpath Nokogiri 的方法不适合。

我不确定为什么会发生这种事情。我试图去除斜杠,但内容 \u306e\u8a9e 中存在 unicode 字符,因此这不是解决方案。编码检查也显示它被编码为 'utf-8'

这个问题的根源是什么?

这是通过在 lambda 中使用 node.js 处理程序解决的,从而从 html 请求中获取准确的内容。