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

我正在尝试检索一个 torrent 链接,最好是第一个非赞助链接。从一个页面,然后让它打印链接。我对这种编码相当陌生,因此您可以提供尽可能多的细节将是完美的!非常感谢你的帮助!

4

1 回答 1

1

问题出在您的正则表达式中。您正在尝试使用该^字符来否定正则表达式,但它不适用于您的情况。^唯一否定一组字符(里面的一组字符)[];即使在这种情况下,它也只会在它是第一个字符时否定。例如,表示“、、和”之外的[^aeiou]任何字符。 aeiou

当您在字符集^ 之外使用时,它会匹配一行的开头。例如,匹配以字符串^aeiou开头的行。aeiou

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

(?!/announcelist)

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

于 2011-12-15T00:03:12.840 回答