2011-04-04 69 views
2

可能重複:
Where shall I start in making a scraper or a bot using python?如何編寫Python機器人瀏覽

我知道這是明顯的可能...... 我被要求執行某種機器人是一個訪問網站,登錄,訪問一組鏈接,用日期輸入填充搜索表單以獲取XLS文件並註銷。 如果手動完成,整個考驗需要將近一個小時,所以腳本/機器人會爲我們節省很多時間。

想法?圖書館?我想我需要urllib?
或者可能根本不使用Python?
在此先感謝!

編輯:我搜索了很多關於「python crawler」的內容,並沒有在Mechanize或Scrapy上找到,直到評論之前:/
我會先看看Mechanize。謝謝。

+3

請參見[我應該從哪裏開始使用python製作刮刀或bot?](http://stackoverflow.com/questions/3075792/where-shall-i-start-in-making-a-scraper-or -a-BOT,使用的Python)。 – 2011-04-04 20:35:55

+1

機械化如何? http://wwwsearch.sourceforge.net/mechanize/ – GWW 2011-04-04 20:36:00

+1

更好的是http://scrapy.org/ – 2011-04-04 20:46:58

回答

3

我是twill python模塊的粉絲。這裏有一小段來自它的代碼,我不久前用它來做基本的瀏覽和抓取。

import twill 
import twill.commands as c 

def login(): 
    c.clear_cookies() 
    c.go('http://icfpcontest.org/icfp10/login') 
    c.fv(1, 'j_username', 'Side Effects May Include...') 
    c.fv(1, 'j_password', '<redacted>') 
    c.submit() 
    c.save_cookies('/tmp/icfp.cookie') 

all_cars_rx = re.compile(r'<td style="width: 20%;">(\d+)</td><td>(\d+)</td>') 
def list_cars(): 
    c.go('http://icfpcontest.org/icfp10/score/instanceTeamCount') 
    cars = re.findall(all_cars_rx, c.show()) 
    if not cars: 
     sys.stderr.write(c.show()) 
     sys.stderr.write('Could not find any cars') 
    return cars; 

值得一提的是,應該使用正則表達式來解析HTML。你在這裏所做的是在非常短的時間表上爲ICFP完成的骯髒的黑客攻擊。

0

最近我發現了PhantomJS,並將它用於類似的任務。它是內置全功能Webkit引擎的命令行JavaScript解釋器。恕我直言,這是一個非常容易使用的工具,可以處理像你這樣的任務,並且你可以使用Firebug提供的各種腳本功能。此外它還有內置的屏幕截圖並將其保存到圖像文件。