Web サイトの下にあるすべてのディレクトリとリンクを見つけるにはどうすればよいですか? ホームページから他のすべてのページへのリンクはないことに注意してください。たとえば、users.company.com のようなドメインがあり、各ユーザーに users.company.com/john、users.company.com/peter などのリンクがあるとします。しかし、そこに何人のユーザーがいるかわかりません。すべてのリンクは何ですか。総当たりですべてのリンクをチェックしたいです。この仕事をするための python スクリプトを書きたい場合、これを python で開発するための情報はどこで入手できますか?
3 に答える
ホームページから他のページへのリンクがないため。あなたが持っている唯一の情報は、ホームページの URL と、ユーザーへのアクセスに使用される URL パターンです。
その場合、名前の辞書を使用するか、長さが制限されたすべての可能な文字列順列を使用することが唯一の可能性です。そして、それらのすべてにアクセスします。
HTTP リクエストの作成方法や URL を開く方法については、http://docs.python.org/2/library/urllib.html を参照してください。
次に、すべての名前/文字列の順列を反復処理して URL を呼び出すループを記述します。
これを同時に行うことを検討することもできますが、これは比較的簡単に達成できるはずです: http://en.wikipedia.org/wiki/Embarrassingly_parallel
最初に Python スクリプトを作成する代わりに、その目的のためにサードパーティ ツールを使用できます。
1) 最初のステップでは、対象の Web サイトのミラーを作成し、それを解析します。「wget -mk http://www.targetwebsite.com」でターゲット Web サイトのミラーを作成できます。
http://www.gnu.org/software/wget/
Pythonでミラーコードを解析できるよりも。
2) Google doking クエリの例:
site:stackoverflow.com
site:stackoverflow.com intitle:"index of"
site:stackoverflow.com ext:html ext:php
robots.txt ファイルを持たないパスでは正しく機能します。
'mechanize' python モジュールを確認してください。とても使いやすいです。このページは私を大いに助けました - 素晴らしい情報源: http://stockrt.github.com/p/emulating-a-browser-in-python-with-mechanize/ https://scraperwiki.com/views/python_mechanize_cheat_sheet /編集/
'mechanize' ができることの味を示すために、指定された URL からのすべてのリンクを一覧表示する単純な関数を次に示します。
import mechanize
def test():
headers = ('User-Agent','Mozilla/4.0')
url = 'http://www.google.com'
browser = mechanize.Browser()
browser.addheaders=[headers]
response = browser.open(url)
for link in browser.links():
print link
if __name__ == '__main__':
test()