J'écris une fonction dans aws-lambda
. La fonction est simple. Il obtient juste la demande de site Web spécifique.Le résultat de urllib2 diffère de celui d'un navigateur Web
La fonction Lambda dans python2 est comme ci-dessous. import urllib2
est également inclus.
def lambda_handler(event, context):
# TODO implement
url = "https://www.amazon.co.jp/s/field-keywords=4548967337259"
response = urllib2.urlopen(url)
#print response
return response.read()
Je prends la valeur retournée à mon serveur ruby on rails
et essayé d'analyser pour les informations nécessaires.
Sur le site Web, l'étiquette et les informations relatives sont montrées comme ci-dessous.
<a class="a-link-normal a-text-normal" target="_blank"
rel="noopener" href="https://www.amazon.co.jp/GOTHAM-
%E3%82%B5%E3%83%BC%E3%83%89-%E3%82%B7%E3%83%BC%E3%82%BA%E3%83%B3-
%E3%83%96%E3%83%AB%E3%83%BC%E3%83%AC%E3%82%A4-
%E3%82%B3%E3%83%B3%E3%83%97%E3%83%AA%E3%83%BC%E3%83%88-
%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9-Blu-ray/dp/B071K5VZTL/ref=sr_1_1?
ie=UTF8&qid=1505293516&sr=8-1&keywords=4548967337259">
Cependant, si je prends response
et utilise read()
méthode pour transférer, il ressemble à ceci.
<a class=\"a-link-normal a-text-normal\" target=\"_blank\" rel=\"noopener\"
href=\"https://www.amazon.co.jp/GOTHAM-%E3%82%B5%E3%83%BC%E3%83%89-
%E3%82%B7%E3%83%BC%E3%82%BA%E3%83%B3-
%E3%83%96%E3%83%AB%E3%83%BC%E3%83%AC%E3%82%A4-
%E3%82%B3%E3%83%B3%E3%83%97%E3%83%AA%E3%83%BC%E3%83%88-
%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9-Blu-ray/dp/B071K5VZTL\">
Pourquoi cela se produit-il et comment puis-je éviter cela?
En fait, j'ai essayé quelque chose comme response.json()
mais il n'a pas été en mesure de faire la forme json
entièrement.
pouvez-vous expliquer la différence avec les en-têtes et sans elle? –
@ jh.shin vous pouvez "tromper" le serveur en pensant que vous êtes un navigateur Web. Sans cela, il semble que cela vous servira un contenu différent. –