2

ページを取得するために urllib ライブラリを使用しています。通常、私はトップレベルのドメイン名を持っており、そのドメイン内のすべてのページからいくつかの情報を抽出したいと考えています. したがって、xyz.com がある場合、コードで xyz.com/about などからデータを取得したいと思います。使用しているものは次のとおりです。

import urllib,re

htmlFile = urllib.urlopen("http://www.xyz.com/"+r"(.*)")
html = htmlFile.read()
...............

しかし、これは私にとってはうまくいきません。どんなアイデアでも大歓迎です。

ありがとう。-T

4

4 に答える 4

3

なぜあなたが仕事を期待するのか私にはわかりませんdomain.com/(.*)。そのドメイン内のすべてのページ (動的または静的) のリストが必要です。あなたのpythonプログラムはそれを自動的に知ることができません。この知識は、リンクをたどるか、Web サイトのサイトマップを参照して、他の場所から取得する必要があります。

脚注として、スクレイピングは少し怪しいビジネスです。どの方法を使用する場合でも、利用規約に違反していないことを常に確認してください。

于 2012-05-01T15:22:39.223 に答える
1

Web サーバーで正規表現を使用しようとしています。結局のところ、Web サーバーは実際にはこの種の形式をサポートしていないため、失敗しています。

やろうとしていることを行うには、スパイダーを実装する必要があります。ページをダウンロードし、ページ内のすべてのリンクを見つけて、どのリンクに従うかを決定するプログラム。次に、それらのページをそれぞれダウンロードし、繰り返します。

注意すべきいくつかのこと - ループ、同じページを指し示す複数のリンク、ドメイン外へのリンク、数千のリクエストでスパムを送信するための Web サーバーからの禁止。

于 2012-05-01T15:22:17.513 に答える
0

Scrapy にはこの機能が組み込まれています。再帰的にリンクを取得する必要はありません。すべての面倒な作業を非同期で自動的に処理します。ドメインと検索用語を指定し、ページ内、つまりサイト全体を検索する深さを指定するだけです。 http://doc.scrapy.org/en/latest/index.html

于 2012-05-01T15:47:01.097 に答える
0

@zigdon の回答に加えて、 scrapyフレームワークを確認することをお勧めします。

CrawlSpiderは、クロールを非常に簡単に実装するのに役立ちます。

于 2012-05-01T15:47:28.970 に答える