2017-01-11 7 views
-1

私は、Python 2.7を使用してアプリケーションエンジンでurlfetch.fetchを使用しています。Python GAEでURLFetchを使用して完全なドキュメントを取得する

2つの異なるドメインに属する2つのURLを取得しようとしました。最初のものでは、urlfetch.fetchの結果には、推奨製品を入手するために作成されたXHRクエリを解決した後の結果が含まれています。 しかし、別のドメインに属する他のページでは、XHRクエリが解決されず、ほとんどの場合プレーンHTMLが取得されます。このページのXHRクエリはまた、表示するように推奨品を得ることを目的として作られていますなど

ここ

である私がUrlFetchの使用方法: fetch_result = urlfetch.fetch(URL、締め切り= 5、validate_certificate = true)を

URL 1(XHRが解決し、応答が完了している1) https://www.walmart.com/ip/HP-15-f222wm-ndash-15.6-Laptop-Touchscreen-Windows-10-Home-Intel-Pentium-Quad-Core-Processor-4GB-Memory-500GB-Hard-Drive/53853531

URL 2(私はほとんどの部分はプレーンなHTMLを取得1) https://www.flipkart.com/oricum-blue-486-loafers/p/itmezfrvwtwsug9w?pid=SHOEHZWJUMMTEYRU

ことができる人不一致に関して私が欠けているかもしれないものをアドバイスしてください。

+0

urlfetchがページ上でjavascriptスクリプトを実行してその結果を含めることはできません。 urlfetchは何とかxhrリクエストの結果をその結果に含めていると思いますか? – snakecharmerb

+0

指定したURL1に対してurlfetch.fetchを実行し、その出力をブラウザのHTMLソースと比較することができます。内容が異なることがわかります。その差異の一部は、ページに表示されている他の製品から発生します。これはChrome開発者コンソールから見たXHR経由で取得されます。明確にするために、urlfetch.fetchがJSなどを実行することは期待していませんでしたが、その結果はプレーンなHTMLソースコンテンツとは異なるように思われました。 – user6781569

答えて

0

サーバーは、要求ヘッダーで指定されたユーザーエージェント文字列に基づいて異なる出力を提供しています。

デフォルトでは、urlfetch.fetchは、ユーザーエージェントヘッダーをAppEngine-Google; (+http://code.google.com/appengine; appid: myapp.appspot.comのように設定して要求を送信します。

ブラウザがこのようなユーザーエージェントヘッダーお送りします:あなたはurlfetch.fetch

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0'} 
urlfetch.fetch(url, headers=headers) 

のデフォルトのヘッダをオーバーライドする場合は、あなたが受け取るHTMLが務めとほぼ同じであることがわかりますMozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0

をブラウザに送信します。

関連する問題