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_css
或 xpath
Nokogiri
的方法不适合。
我不确定为什么会发生这种事情。我试图去除斜杠,但内容 \u306e\u8a9e
中存在 unicode 字符,因此这不是解决方案。编码检查也显示它被编码为 'utf-8'
这个问题的根源是什么?
这是通过在 lambda 中使用 node.js
处理程序解决的,从而从 html 请求中获取准确的内容。
我的 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_css
或 xpath
Nokogiri
的方法不适合。
我不确定为什么会发生这种事情。我试图去除斜杠,但内容 \u306e\u8a9e
中存在 unicode 字符,因此这不是解决方案。编码检查也显示它被编码为 'utf-8'
这个问题的根源是什么?
这是通过在 lambda 中使用 node.js
处理程序解决的,从而从 html 请求中获取准确的内容。