2011-12-14 61 views
0
from BeautifulSoup import BeautifulSoup 
import urllib2 
import re 


user = raw_input('begin here!: ') 
base = ("http://1337x.org/search/") 
print (base + user) 
add_on = "/0/" 
total_link = (base + user + add_on) 
html_data = urllib2.urlopen(total_link, 'r').read() 
soup = BeautifulSoup(html_data) 
announce = soup.find('a', attrs={'href': re.compile("^/announcelist")}) 
print announce 

我正在嘗試檢索洪流鏈接,最好是第一個非贊助鏈接。從一個頁面,然後讓它打印鏈接。我在這個編碼方面頗爲新穎,所以你可以給出的細節非常完美!十分感謝你的幫助!使用BeautifulSoup查找網頁中的某個鏈接

+2

通常有助於解釋你所遇到的問題。你的代碼如何不適合你?它有什麼問題? – 2011-12-14 13:33:20

回答

1

問題出在您的正則表達式中。您正在嘗試使用^字符來否定正則表達式,但它在您的情況下不起作用。 ^只會否定一組字符([]內的一組字符);即使在這種情況下,如果它是第一個字符,它也只會否定。例如,[^aeiou]意味着 「任何字符除了aeiou」。

當您使用^外部一個字符集,則它匹配一行的開始。例如,^aeiou與以aeiou字符串開頭的行匹配。

那麼,你會如何否定一個正則表達式?那麼,我所看到的最好的方法是使用負面預測,這是一個以(?!開頭並以)結尾的正則表達式。對於你的情況,這是很簡單的:

(?!/announcelist)

所以,更換re.compile("^/announcelist")通過re.compile("(?!/announcelist)"),它應該工作 - 至少在這裏工作過:)

相關問題