3

ウィキペディアの記事をクリックして読み返すのが嫌いなので、次のアルゴリズムに従って「拡張されたウィキペディアの記事」を作成するツールを構築しようとしています。

  • Depthとの 2 つの変数を作成しますLength
  • ウィキペディアの記事をシード ページとして設定する
  • この記事を解析する: 別の記事へのリンクがある場合は常に、最初のLength文を取得し、元の記事に含めます (例: 括弧内またはその他の方法で強調表示)。
  • これを特定の まで再帰的に実行しDepthます。つまり、2 レベルより深くはなりません。

その結果、あちこちクリックしなくても一度に読める記事になります...

そのようなメカニズムを Python でどのように構築しますか? どのライブラリを使用する必要がありますか (そのようなタスク用のライブラリはありますか)? 役に立つチュートリアルはありますか?

4

5 に答える 5

3

URL の要求にはurllib2を使用できます。HTMLページを解析するために、 BeautifulSoupという素晴らしいライブラリがあります。考慮すべきことの 1 つは、クローラーでウィキペディアをスキャンしているときに、要求と共にヘッダーを追加する必要があるということです。そうしないと、ウィキペディアは単にクロールを許可しなくなります。

 request = urllib2.Request(page)

ヘッダーの追加

 request.add_header('User-agent', 'Mozilla/5.0 (Linux i686)')

次に、ページをロードして に渡しますBeautifulSoup

 soup = BeautifulSoup(response)  
 text = soup.get_text()

これにより、ページ内のリンクが表示されます

 for url in soup.find_all('a',attrs={'href': re.compile("^http://")}):  
       link = url['href']

そして、ウィキペディアをクロールするためのアルゴリズムに関しては、 Depth Limited Searchと呼ばれるものが必要です。同じページに簡単に理解できる疑似コードが用意されています。

また、上記のライブラリの他の機能はグーグルで検索でき、簡単に追跡できます。幸運を。

于 2012-09-28T09:31:35.837 に答える
2

これにはMechanizeを試してみてください。これは、urllib やその他の組み込みライブラリよりも少し高レベルです。follow_link()特に、や などのコマンドを使用して、ブラウザーを使用しているのと同じように簡単にナビゲートできますback()

必要な行を取得するには、ウィキペディアのいくつかのページのソースを見て、要約が HTML ページのどこから始まるかを確認してください。 " 最初の<p>要素からテキストを取得します。他の人が言ったように、美しいスープはこれが得意です.

または、ウィキペディアで動作する Python ライブラリの 1 つを試すこともできます。ここにリストがあります: http://en.wikipedia.org/wiki/Wikipedia%3aCreating_a_bot#Python、および他のスタックオーバーフローの回答にいくつかの 推奨事項があります。

楽しい小さなプロジェクトのようですね。頑張ってください!

于 2012-09-28T09:33:34.030 に答える
1

html を解析するか、未加工のバージョンを解析して[[Link]]. いずれにせよ、次の点について話し合う必要があります。

urllibまたはリクエスト

于 2012-09-28T09:18:10.123 に答える
1

BeautifulSoupまたはScrapyを使用して、html ページを解析します。urllibまたはrequestsを使用して、ネストされたページを取得します。抽出されたリンクをマッサージまたは評価するには、いくつかの正規表現を使用する必要がある場合があります。

于 2012-09-28T09:16:18.737 に答える