2012-05-01 1 views
2

私はページを取得するためにurllibライブラリを使用しています。通常、私はトップレベルのドメイン名を持っています&私はそのドメイン内のすべてのページからいくつかの情報を抽出したいと思います。したがって、私はxyz.comを持っている場合、私はxyz.com/aboutな​​どからデータをフェッチするために自分のコードが欲しいここで私が使用しています何:ドメイン内のすべてのページを読む

import urllib,re 

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

このDOEはしかし私のためにトリックを行うませません。任意のアイデアが評価されます。

ありがとうございました。 -T

+3

再帰的ウェブページダウンローダである 'wget'を使用して、ウェブページ、そのウェブページからリンクされたすべてのウェブページ、それらの*ウェブページからリンクされたすべてのウェブページなどをダウンロードします。 –

+1

また、ちょっとメモを書いて、貧しい人のウェブサイトから大量のデータを取り出すことで貧しい人のウェブサイトを殺していないことを確認してください。 –

+0

お役立ち情報をお寄せいただきありがとうございます。 – user818190

答えて

0

@zigdonの回答に加えて、scrapyのフレームワークをご覧ください。

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

+0

これは完璧なように聞こえる、それはショットを与えるだろう。ありがとう! – user818190

+0

私はscrapyのBaseSpiderを使って私のニーズにうまくいきます。しかし、1つの問題が残っています。つまり、scrapyはその下のstart_url&1レベルから情報を取得します。より深いレベルにある情報は見逃されます。どのように私はサイトが行くかもしれないほど深く見えるように私のスパイダーを得るのですか? – user818190

+1

BaseSpiderを使用する場合は、スパイダーを手動でプログラムします。ロードするページ、抽出するデータなどを指定します。 CrawlSpiderはすべてのリンクを自動的に抽出できます。詳細については、ドキュメントをお読みください。より具体的な質問がある場合は質問してください。 – San4ez

1

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

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

ルーピング、同じページを指している複数のリンク、ドメインの外に出るリンク、1000sの要求でスパム送信するウェブサーバーからの禁止がいくつかあります。

3

なぜdomain.com/(.*)が動作するのかわかりません。そのドメイン内のすべてのページ(動的または静的)のリストが必要です。あなたのpythonプログラムは自動的にそれを知ることはできません。この知識は、リンクをたどったりウェブサイトのサイトマップを見たりすることによって、どこからでも取得する必要があります。

脚注として、擦り傷はやや日陰のビジネスです。どのような方法を採用していても、利用規約に違反していないことを常に確認してください。

0

Scrapyにはこの機能が組み込まれています。再帰的にリンクを取得することはありません。それはあなたのためのすべての重い持ち上げを非同期に自動的に処理します。あなたのドメインと検索条件を指定するだけで、ページ全体を検索するにはどれくらいの深さが必要ですか? http://doc.scrapy.org/en/latest/index.html

+0

Scrapyについてのヘッドアップのおかげで、私はそれを完全に見落としました。 @ San4ezにはもっと具体的な例があります。まずは試してみましょう。 – user818190

関連する問題