Можно ли редактировать встроенный код в BeautifulSoup?

1

Я знаю о возможности редактирования текста с помощью beautifulsoup, можно ли редактировать ссылки href? Я хотел бы иметь возможность сказать <a href="/foo/bar/"> и использовать beautifulsoup, чтобы изменить его на <a href="http://www.foobarinc.com/foo/bar/">. Я не уверен, как я буду использовать beautifulsoup для этого? Любая помощь, очень ценится.

  • 0
    Вам нужно выделить ваши якорные теги кнопкой «code» (101010), чтобы мы могли их видеть.
  • 0
    @ sberry2A Спасибо
Теги:
beautifulsoup

2 ответа

6
Лучший ответ

Как и в другом вопросе: с помощью BeautifulSoup вы разбираете содержимое в виде набора иерархически вложенных объектов, представляющих документ, а затем меняете эти объекты, прежде чем их сериализовать обратно в другой текст. Вы не редактируете текст напрямую.

Часть разметки href="..." представляет собой атрибут. Чтобы получить доступ к атрибутам каждого элемента в BeautifulSoup, вы используете el[name] доступ к элементам стиля. Таким образом, чтобы изменить корневые URL-адреса в абсолютные в атрибутах a href, это так же просто, как:

for link in soup.findAll('a'):
    if link['href'].startswith('/'):
        link['href']= 'http://www.foobarinc.com'+link['href']
  • 0
    Я пытался сделать что-то подобное, но продолжал возвращаться. Я не могу найти список словаря, который соответствует тегам. Я попробовал это, и он вернул KeyError: href. Кроме того, большое спасибо, Бобинс.
3

Несмотря на то, что OP говорит в комментарии к bobince, следующий код работает просто отлично:

from BeautifulSoup import BeautifulSoup

ht = '''
  <a href="/foo/bar/">Hello world</a>
'''
soup = BeautifulSoup(ht)

for link in soup.findAll('a'):
    if link['href'].startswith('/'):
        link['href']= 'http://www.foobarinc.com'+link['href']
print soup

испускает

<a href="http://www.foobarinc.com/foo/bar/">Hello world</a>

по желанию. Итак, вместо того, чтобы смутно заявить

Я пытался с этим поделать, но продолжал получать [none]. я не может найти список словарей который соответствует тегам. Я попробовал это, и он вернул KeyError: href.

(???), OP лучше попытаться изменить код, который я только что опубликовал, приблизив его ближе к его собственному, пока не появятся странные ошибки [none] returned и KeyError:href (???): at в то время, самое последнее изменение, которое заставило их появиться, должно было наглядно показать, что ОП делает неправильно - если нет, отправляйте точные данные и код, как и я, и точно скопированную и вставленную трассировку ( не смутные личные перефразировки!), и я уверен, мы сможем помочь! -)

  • 0
    Лед для этого горит.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню