2016-04-08 15 views
-6

urllibのPython 3でWebサイトからソースコードを取得しようとしています。スクリプトを実行すると、ブラウザでJavaScriptが有効になっている必要があります。しかし、私はそれが有効になっていることを確信しています。ここに私のスクリプトとエラーです:エラーが表示されますJavaScriptを教えてください

エラー:

/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py" --multiproc --qt-support --client 127.0.0.1 --port 57883 --file /Users/titusflex/PycharmProjects/HelloPython/testtest.py warning: Debugger speedups using cython not found. Run '"/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5" "/Applications/PyCharm CE.app/Contents/helpers/pydev/setup_cython.py" build_ext --inplace' to build. pydev debugger: process 3089 is connecting

Connected to pydev debugger (build 145.598) b"http://www.google.com/adwords/select/interstitial_short_js.html'>var jsRedirect = true;var url = '\/um\/identity?authuser\x3d0\x26dst\x3d\/cm\/CampaignMgmt?';if (self.document.location.hash) {var querySeparator = (url.indexOf('?') == -1) ? '?' : '&'; url += querySeparator + 'frag=' + encodeURIComponent(self.document.location.hash.substring(1));}window.location.assign(url);"

Process finished with exit code 0

+0

だから、あなたがダウンロードしたHTMLにはJavaScriptが含まれていますか?まあ、Pythonはあなたのためにそれを解釈しません、それはちょうどあなたに生のダウンロードされたHTMLソースコードを与えます。あなたがブラウザではなく、Javascriptを実行していない場合は、それだけで十分です。 – deceze

+2

この場合の「ブラウザ」はPythonです。私は本当にあなたがそこにJavaScriptを持っているとは思わない。 – Biffen

+1

これはPythonのエラーメッセージではありません。エラーはどこで確認できますか?ダウンロードしたページのコンテンツのように聞こえ、ページにJS検出コードが含まれているという事実に関連しています。ブラウザでJSを表示するときに期待通りにJSを動作させる必要がある場合は、これを行うためにヘッドレスブラウザが必要です。 –

答えて

1

あなたが実際にサイトからの応答を得ているが、サイトのサーバーは、それからのリクエストを受信したときの応答の独自の方法を持っていますそれはJavaScriptのサポートを持っていないと思うクライアント。

したがって、Javascriptを処理できるようにするために、スクレイピングコールをサイトにスプーフィングする方法を探す必要があります。

ユーザーエージェント要求ヘッダーを偽装しようとすることはできますが、私は真剣にそれがうまくいくとは思っていません。あなたはセレンのようなもので一層良くなるでしょう。

編集

関連する問題