2017-10-27 3 views
1

の内容を読み取るタイトルが言及したように、私はaiohttpとasyncioを使用して、複数のページからデータをつかむしようとしています。しかし、私が抱えている問題は、ページからの情報をあまりにも素早く取り出して終了するというプログラムが必要です。ウェブページはコンテンツを最初に更新する必要があり(数秒かかる場合があります)、次に更新して適切に更新されたコンテンツを表示する必要があります。これは収集するものです。ロードのURL、数秒待って、ページを更新し、その後、ページ

私はそれの内容を読み、その後、数秒待って、ページをロードするページを更新し、できる方法はありますか?これは私の現在の方法のように見えるフェッチものです:あなたは、あなたのブラウザのタブでURLをロードすると

async def fetch(session, url): 
    with aiohttp.Timeout(10): 
     async with session.get(url) as response: 
      return await response.text() 
+0

「ウェブページの内容を更新する必要がありますか?」とはどういう意味ですか?ブラウザでページにアクセスした場合、ページを更新するときに変更されますか?または、読み込んだページを更新するAjax呼び出しがありますか? – dirn

+0

ページが読み込まれ、「更新中」の行に沿ってメッセージが表示されます。数秒後、「更新済み、更新してください」というメッセージが表示され、更新時にページの内容が変更されます。 –

答えて

1

、ブラウザは、(我々の場合にのみ、HTMLテキストが含まれます)URLのコンテンツを取得するための要求を送信します。次にブラウザはこのHTMLのリンクを検索します。画像へのリンク、CSSへのリンク、スクリプトへのリンク、それをロードする要求を送信します。このリンクのいくつかがブラウザにロードされると、ページのビューが更新されます。特に、javascriptリンクがロードされたブラウザがそれを実行し始めたとき(ページのHTMLコンテンツを更新するとき)。ページをロードするために必要なすべてのリンクとすべてのスクリプトが実行されたとき - ページが完全にロードされている。

aiohttpのようなすべてのこのプロセス要求libから、最初のことだけを実行します - URLのコンテンツ(response.text())を取得する要求を送信します。このコンテンツ内にスクリプトリンクが読み込まれることはなく、コンテンツを変更するためにスクリプトリンクが実行されることはありません。

何あなたが尋ねるするaiohttpで行うことはできません。

あなたははるかに複雑ブラウザベースのソリューションlike PyQtを必要とする実行JavaScriptを使用してコンテンツをロードする必要がある場合。

関連する問題