使用BeautifulSoup在网页中查找某个链接

时间:2011-12-14 12:47:15

标签: python beautifulsoup scraper

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

我正在尝试检索torrent链接,最好是第一个非赞助商链接。从页面,然后打印链接。我对这个编码很新,所以尽可能多的细节是完美的!非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

问题在于你的正则表达式。您正在尝试使用^字符来取消正则表达式,但它在您的情况下不起作用。 ^仅取消一组字符([]内的一组字符);即使在这种情况下,它只会否定它是否是第一个字符。例如,[^aeiou]表示“除 aeiou之外的任何字符

当您使用<{1}} 外部字符集时,它会匹配行的开头。例如,^匹配以^aeiou字符串开头的行。

那么,你会如何否定正则表达式呢?好吧,我看到的最好的方法是使用否定前瞻,这是一个以aeiou开头并以(?!结尾的正则表达式。对于您的情况,这很容易:

)

所以,将(?!/announcelist)替换为re.compile("^/announcelist")它应该有用 - 至少在这里工作:)