Как отключить все ссылки не в списке, используя красивый суп - PullRequest
0 голосов
/ 07 июня 2019

В настоящее время я работаю над веб-приложением (используя колбу для бэкэнда).

В моем бэкэнде я получаю исходный текст страницы данного URL-адреса с помощью селена.Я хочу пройти через page_source и отключить все ссылки, чья ссылка отсутствует в списке.Что-то вроде:

body = browser.page_source
soup = BeautifulSoup(body, 'html.parser')
for link in soup.a:
    if not (link['href'] in link_list):
        link['href']=""

Я новичок в прекрасном супе, поэтому я не уверен в синтаксисе.Я использую Красивый суп 4

1 Ответ

1 голос
/ 08 июня 2019

Разобрался:

soup = BeautifulSoup(c_body, 'lxml') #you can also use html.parser
for a in soup.findAll('a'):
    if not (a['href'] in src_lst):   #src_list is a list of the urls you want to keep
        del a['href']
        a.name='span' #to avoid the style associated with links
soup.span.unwrap()    #to remove span tags and keep text only
c_body=str(soup)      #c_body will be displayed in an iframe using srccdoc

РЕДАКТИРОВАТЬ: выше код может сломаться, если нет тегов span, так что это был бы лучший подход ::

soup = BeautifulSoup(c_body, 'lxml')
for a in soup.findAll('a'):
    if a.has_attr("href"):
       if not (a['href'] in src_lst):
            del a['href']
            a.name='span'

if len(soup.findAll('span')) > 0:
    soup.span.unwrap()
c_body=str(soup)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...