6


6

PythonのWebクローラー。 どこから始めればいいですか? -助けが必要

私はPythonの中間知識を持っています。 PythonでWebクローラーを作成する必要がある場合は、何をフォローする必要があり、どこから始める必要がありますか。 特定のタットはありますか? アドバイスは大いに役立ちます。 ありがとう

8 Answer


7


Scrapyをご覧になることを強くお勧めします。 ライブラリは、BeautifulSoup、または任意のHTMLパーサーで動作します。 個人的にlxml.htmlで使用しています。

箱から出して、無料でいくつかのものを受け取ります:

  • 同時リクエスト、Twistedのおかげ

  • 「CrawlSpider」オブジェクトは、サイト全体でリンクを再帰的に検索します

  • データ抽出と処理の優れた分離。 並列処理機能の


5


必ずHTML解析ライブラリが必要になります。 これには、BeautifulSoupを使用できます。 URLを取得し、返されたhtmlを処理するための多くのサンプルとチュートリアルを公式ページで見つけることができます:http://www.crummy.com/software/BeautifulSoup/


5


それでも最初から作成したい場合は、http://wwwsearch.sourceforge.net/mechanize/ [mechanize]モジュールを使用します。 ブラウザをシミュレートし、URLの取得を自動化するために必要なすべてが含まれています。 冗長になり、フェッチしたhtmlを解析するためのBeautifulSoupも言います。 そうでなければ、私はスクレイピーに行きます…​


3


必要なことを既に行っているhttp://pypi.python.org/pypi/spider.py/0.5 [既存のコード]を探してみませんか? 自分でビルドする必要がある場合は、既存のコードを調べて、それがどのように機能するかを理解するために分解する価値があります。


2


それはあなたのニーズ次第です。 基本的なウェブスクレイピングが必要な場合は、mechanize + BeautifulSoupがそれを実現します。

javascriptのレンダリングが必要な場合は、Selenium、またはhttp://code.google.com/p/spynner/[spynner]に行きます。 両方とも素晴らしいです。


2


IBM Developer Worksには、このhttps://www.ibm.com/developerworks/linux/library/l-spider/#N101C6に関する記事があります。 他の人が提案したライブラリを使用したいと思うかもしれませんが、これによりフローの全体的なアイデアが得られます。


1


必要なもう1つの優れたライブラリは、フィードの解析用です。 これでURLのBeautifulSoupができたので、フィードにFeedparserを使用できます。 http://www.feedparser.org/


-1


import re, urllib

textfile = file('depth_1.txt','wt')
print "Enter the URL you wish to crawl.."
print 'Usage  - "http://dynamichackerboys.blogspot.in" <-- With the double quotes'
myurl = input("@> ")
for i in re.findall('''href=["'](.[^"']+)["']''', urllib.urlopen(myurl).read(), re.I):
        print i
        for ee in re.findall('''href=["'](.[^"']+)["']''', urllib.urlopen(i).read(), re.I):
                print ee
                textfile.write(ee+'\n')
textfile.close()

print 'Usage-"http://dynamichackerboys.blogspot.in" ←re.findall(' '' href = "'["']のiの二重引用符でmyurl = input( "@>") '' '、urllib.urlopen(myurl).read()、re.I):re.findall(' '' href = "'["'] '' '、urllib.urlopen(i)でeeのiを出力.read()、re.I):印刷ee textfile.write(ee + '\ n')textfile.close()

ウェブサイトのクロール用