@Web__Nikita03

Почему неправильно работает парсер с рег. выражением?

Я парсю википедию и достаю все ссылки, ведущие на другие страницы, начинающиеся с /wiki/. В ссылке не должно содержаться знака :. Вот мой код
from bs4 import BeautifulSoup as bs
from urllib.request import urlopen
import re

site = urlopen('https://en.wikipedia.org/wiki/Kevin_Bacon')
soup = bs(site, features='html.parser')

for i in soup.find('div', {'id': 'bodyContent'}).findAll('a', {'href': re.compile('\/wiki\/(?!:)[\w\/()%]+')}):
    if 'href' in i.attrs:
        print(i.attrs['href'])


По идее, мое регулярное выражение не должно пропускать ссылки типа /wiki/Category:Wikipedia_articles_with_NKC_identifiers (https://www.regextester.com/?fam=110956), но вот мой вывод https://pastebin.com/Nzad6ZUG . И там данные ссылки присутствуют. Объясните почему?
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
@dodo512
\/wiki\/(?!:) не пропустит только /wiki/:
\/wiki\/(?!.*:) а так уже и /wiki/Category:
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы