2012-11-06 241 views
2

我想在Python中編寫一個基本的網絡爬蟲。我遇到的麻煩是解析頁面以提取網址。我都嘗試了BeautifulSoup和正則表達式,但我無法實現有效的解決方案。Python中的網絡爬蟲

舉個例子:我試圖在Facebook的Github頁面中提取所有成員網址。 (https://github.com/facebook?tab=members)。我寫的代碼提取了成員的URL;

def getMembers(url): 
    text = urllib2.urlopen(url).read(); 
    soup = BeautifulSoup(text); 
    memberList = [] 
    #Retrieve every user from the company 
    #url = "https://github.com/facebook?tab=members" 

    data = soup.findAll('ul',attrs={'class':'members-list'}); 
    for div in data: 
    links = div.findAll('li') 
    for link in links: 
      memberList.append("https://github.com" + str(link.a['href'])) 

    return memberList 

但是這需要相當長的一段解析和,我在想,如果我能更有效地做到這一點,因爲爬行過程太長。

+0

您是否嘗試過使用不同的解析器?您可以使用[lxml](http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser)解析器與美麗的湯,使其相當快。 – kreativitea

+0

@kreativitea我正在查看它。非常感謝您的幫助! – Ali

+1

當然,這不是你的互聯網連接?處理本身應該很快。我的建議:將輸出寫入文件,並檢查需要多長時間。 – RParadox

回答

1

爲了防止寫入刮刀自己,你可以使用可用的。也許嘗試scrapy,它使用python,它在github上可用。 http://scrapy.org/