2

ページを開こうとしたときにブラウザが GET リクエストを実行するすべての URL のリストを取得できるようにしたいと考えています。たとえば、cnn.com を開こうとすると、ブラウザが再帰的に要求する最初の HTTP 応答内に複数の URL があります。

ページをレンダリングしようとしているわけではありませんが、ページがレンダリングされるときに要求されるすべての URL のリストを取得しようとしています。ダウンロードされた css に画像が存在する可能性があるため、http 応答コンテンツを単純にスキャンするだけでは十分ではありません。とにかくPythonでこれを行うことができますか?

4

2 に答える 2

2

すべてのリソースの完全なリストを確実に取得するには、ページをレンダリングする必要がある可能性があります (必ずしも表示する必要はありません)。私は同様の状況でPyQTandを使用しました。QtWebKit特に、javascript を使用して動的に含まれるリソースをカウントし始めると、ページを再帰的に解析してロードしようとしてBeautifulSoupもうまくいきません。

Ghost.pyは、PyQT を使い始めるための優れたクライアントです。また、QWebView のドキュメントQNetworkAccessManager のドキュメントも確認してください。

ページを開くと、Ghost.py は (ページ、リソース) のタプルを返します。

from ghost import Ghost
ghost = Ghost()
page, resources = ghost.open('http://my.web.page')

resources元の URL によって読み込まれたすべてのリソースが HttpResource オブジェクトとして含まれます。ロードされたリソースの URL を取得するには、resource.url.

于 2013-03-20T01:52:30.617 に答える
0

不要なすべての既知のファイル拡張子のリストを作成する必要があると思います。次に、http 応答の内容をスキャンし、「if substring not in nono-list:」をチェックします。

問題は、すべての href が TLD、フォワードスラッシュ、URL で配信される変数などで終わることです。そのため、不要なものを確認する方が簡単だと思います。

于 2013-03-20T01:41:09.237 に答える