繁体   English   中英

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

[英]Finding a certain link in a webpage, using BeautifulSoup

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

我正在尝试检索种子链接,最好是第一个非赞助链接。 从页面开始,然后让它打印链接。 我在此编码方面还比较陌生,因此您可以提供尽可能多的细节! 非常感谢你的帮助!

问题出在您的正则表达式中。 您正在尝试使用^字符来否定正则表达式,但是在您的情况下它不起作用。 ^只取反一组字符( []内的一组字符); 即使在这种情况下,如果它是第一个字符,也只会取反。 例如, [^aeiou]意思是“ aeiou 以外 a任何字符”。

当您字符集使用^ ,它将与行的开头匹配。 例如, ^aeiou匹配以aeiou字符串开头的行。

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

(?!/announcelist)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM