2017-09-18 7 views
1

私はaws-lambda関数を以下のように書いてあり、htmlコンテンツを返します。 輸入urllib2の 輸入JSONRails Nokogiri html parsing

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これは解決策ではありません。また、エンコードチェックでも 'utf-8'としてエンコードされていることが示されます

この問題の原因は何ですか?

+0

「コンテンツ」はどのように見えますか? – EJ2015

+0

問題は私がすべての値が '\ "rank01 \"'奇妙な\ \ '物と重なっていると言いました。 –

+0

なぜこれが起こるのかを理解するために 'content'を表示すると助けになると思います。 – EJ2015

答えて

0

これはラムダでnode.jsハンドラを使用して解決され、それによってhtml要求から正確な内容が得られました。