0

ウィキペディアのリンクチェーンが有効かどうかを確認するPythonスクリプトを作成しています。たとえば、チェーン

List of jōyō kanji > Elementary schools in Japan > Education > Knowledge

リンクをクリックするだけで各ページにアクセスできるため、有効なページです。

ここでの問題は、これらのページが非常に長く、ページ全体をダウンロードし、リンクがページにあるかどうかを確認し、すべての手順を繰り返すのに長い時間がかかることです。そして、チェーンも長くなる可能性があります。

したがって、私が知りたいのは、 urllib2(または他のライブラリ)を使用して各ページをダウンロードし、必要に応じて停止するように指示できるかどうか、またはこれによってCPUの負荷が高まり、事態が悪化するかどうかです。

4

3 に答える 3

1

手順を繰り返す理由。各ステップは互いに独立している必要があるため、これらを並行して実行できるはずです。

于 2012-07-01T00:21:23.867 に答える
0

ウィキペディアの静的スナップショットを使用したほうがよい場合があります。

于 2012-06-30T23:34:23.947 に答える
0

urllib2でこれを行う方法は見つかりませんでしたが、rawソケットを使用した明らかな解決策が1つあります。

import urlparse

def found(text, data):
     # return True if text was found in data

def get_title(url):
    parsed_url = urlparse(url)
    host = parsed_url.netloc
    path = parsed_url.path
    port = 80

    web = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        web.connect((host, port))
    except Exception:
        return

    web.send('GET %s HTTP/1.1\n' % path)
    web.send('Host: %s\n' % host)
    web.send('\n')

    done = False
    while not done:
        data = web.recv(2048)
        if len(data) > 0 and found("text", data):
            web.shutdown(socket.SHUT_RDWR)
            web.close()
            title = title_match.group(1)
            done = True

    # Do something

このようにして、関連データを見つけたらダウンロードを停止し、大きなWebページから不要なコンテンツをダウンロードしないようにします。

于 2012-07-20T17:36:26.250 に答える