2012-10-15 28 views
1

我已經開始學習python了。我想知道在python中編寫爬網程序的等效方式。從Ruby轉到Python:爬行器

所以在紅寶石我使用:

  1. nokogiri一種從URL獲取JSON數據抓取html和通過CSS標籤入門內容
  2. Net::HTTPNet::HTTP::Get.new(uri.request_uri).body

什麼是這些等價物在python中?

+0

看看scrapy項目。 – zsquare

+0

@zsquare - Scrapy是一個有趣的項目,但不幸的是它沒有解決這個問題。 – pguardiario

+1

@pguardiario這個問題本身過於寬泛。 – zsquare

回答

2

主要是你要分開「刮」 /爬蟲蟒蛇的lib /程序/功能將從Web服務器下載文件/數據和解析器將讀取這些數據並解釋數據。 在我的情況下,我不得不廢棄並得到一些「開放」但不下載/數據友好的政府信息。 對於這個項目,我使用了scrapy [1]。

主要是我設置了'starter_urls',這是我的機器人將抓取/獲取的url,並且在我使用函數'parser'來檢索/解析這些數據之後。

對於解析/檢索,您將需要一些html,lxml提取器,因爲90%的數據將是該提取器。

現在聚焦在你的問題:

對於數據爬行

  1. Scrapy
  2. 請求[2]
  3. 的urllib [3]

對於解析數據

  1. Scrapy/LXML或scrapy +其他
  2. LXML [4]
  3. beatiful湯[5]

也請記住 '爬行' 和報廢不僅是網頁,電子郵件了。可以查看,這裏[6]

[1] = http://scrapy.org/

[2]另一個問題 - http://docs.python-requests.org/en/latest/

[3] - http://docs.python.org/library/urllib.html

[4] - http://lxml.de/

[0123] - http://www.crummy.com/software/BeautifulSoup/

[6] - Python read my outlook email mailbox and parse messages

2

Python中事實上的真實世界HTML解析器是beautiful soup。目前Python的requests庫對於HTTP很流行(儘管標準庫具有類似的功能,但是具有相當麻煩的API)。

scrappy和harvestman項目是專爲爬行目的而定製的真實世界爬蟲。

2
  1. LXML和美麗的湯之間,LXML更等效的,因爲它是基於libxml2和它的XPath/CSS的支持,引入nokogiri 。
  2. 網/ HTTP相對應的是urllib2的
1

我也使用Beautiful Soup,它非常簡單的方法如何解析HTML。當我爬行一些網頁時,我也使用The ElementTree XML API。就我個人而言,我非常喜歡ElementTree庫(它易於解析XML)。