2009-01-07 205 views
3

我想編寫一個程序,該程序將查找巴士站時間並相應地更新我的個人網頁。從網頁抓取文本

如果我這樣做手工我會

  1. 訪問www.calgarytransit.com
  2. 輸入停靠數。即)9510
  3. 點擊按鈕 「下一個總線」

的結果可以看起來如下:

10:16P路線154
10:46P路線154
11:32P路線154

一旦我抓住了時間和路線,我會相應地更新我的網頁。

我不知道從哪裏開始。我知道在網絡編程方面蠢蠢欲動,但可以編寫一些C和Python。我可以研究哪些主題/圖書館?

回答

13

Beautiful Soup是專爲解析網頁而設計的Python庫。在它和urllib2(Python 3中的urllib.request)之間,你應該能夠弄清楚你需要什麼。

+0

此外,一定要得到的最新版本3.1.0.1,昨天公佈(2009年1月6日),它修復引入一個大倒退在之前的版本中,當解析器遇到布爾屬性如在野性的,未開發的html版本時會引發解析器異常。 – Prairiedogg 2009-01-07 06:08:40

+2

美麗的湯+1。 – 2009-01-07 06:43:15

3

既然你用C寫的,你可能想看看cURL;尤其要看看libcurl。這很棒。

5

你在問什麼叫做「網頁抓取」。我敢肯定,如果你周圍的谷歌會找到一些東西,但核心概念是,你想打開一個連接到網站,在HTML中啜飲,解析它,並確定你想要的塊。

Python Wiki在這方面有很多東西。

1

該網站並不提供API,以便您能夠獲取所需的相應數據。在這種情況下,您需要解析由CURL請求返回的實際HTML頁面。

0

只要你試圖'刮'的網頁佈局並沒有經常改變,你應該能夠用任何現代編程語言來解析HTML。

1

這就是所謂的網絡抓取,它甚至有它自己的Wikipedia article在哪裏你可以找到更多的信息。

此外,您可能會在此SO discussion中找到更多詳細信息。

2

您可以使用Perl來幫助您完成任務。

use strict; 
use LWP; 

my $browser = LWP::UserAgent->new; 

my $responce = $browser->get("http://google.com"); 
print $responce->content; 

你的性反應的對象可以告訴你,如果它suceeded以及返回page.You的內容也可以使用同樣的圖書館張貼到網頁。

這是一些文檔。http://metacpan.org/pod/LWP::UserAgent