Поиск определенной ссылки на веб-странице с помощью BeautifulSoup - PullRequest
0 голосов
/ 14 декабря 2011
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

Я пытаюсь получить торрент-ссылку, предпочтительно первую не спонсорскую ссылку. со страницы, а затем распечатать ссылку. я довольно новичок в этом кодировании, так что все детали, которые вы можете дать, будут идеальными! Большое спасибо за помощь!

1 Ответ

1 голос
/ 15 декабря 2011

Проблема в вашем регулярном выражении.Вы пытаетесь использовать символ ^ для отрицания регулярного выражения, но в вашей ситуации это не работает.^ отменяет только набор символов (набор символов внутри []);даже в этом случае он только отрицает, если это первый символ.Например, [^aeiou] означает «любой символ , за исключением a, e, i, o и u».

Когда вы используете ^ за пределами набора символов, затем он соответствует началу строки.Например, ^aeiou соответствует строке, которая начинается со строки aeiou.

Итак, как бы вы отрицали регулярное выражение?Что ж, лучший способ, который я вижу, это использовать отрицательный прогноз , который является регулярным выражением, начинающимся с (?! и заканчивающимся ).Для вашего случая это довольно просто:

(?!/announcelist)

Итак, замените re.compile("^/announcelist") на re.compile("(?!/announcelist)"), и оно должно работать - по крайней мере, сработало здесь:)

...