Получить CDATA от BeautifulSoup Python - PullRequest
0 голосов
/ 10 мая 2019

У меня есть исходный код HTML с тегом CDATA, в котором есть некоторая информация, которую я хотел бы получить.

Когда я пытаюсь выполнить следующее:

switch_url = switch_soup.find_all(text=re.compile(('Switches')))

Я получаю такой вывод:

['//<![CDATA[\n    "url":"https://xxxx.meraki.com/xxxxxxx/n/xxxxx/manage/nodes/list","name":"Switches","admin_only":false},{"is_current":false,"url":"https://nxx.meraki.com/xxxxx/n/xxxxx/manage/configure/switchports","name":"Switch ports","admin_only":false},{"is_current":false,"url":"https://xxxx.meraki.com/Dormitory/n/xxxxxxx/manage/configure/dhcp_servers"//]]>\n  ']

Как я могу получить URL "Switches", который: "https://xxxx.meraki.com/xxxxxxx/n/xxxxx/manage/nodes/list" с выхода CDATA?

Заранее спасибо!

1 Ответ

0 голосов
/ 10 мая 2019

Что вам нужно, это

from BeautifulSoup import BeautifulSoup
import re

// source.html contains your html above
f = open('source.html')
soup = BeautifulSoup(''.join(f.readlines()))
cdata = soup.find(text=re.compile("CDATA"))

или вы можете попробовать это

for script in soup(['script', 'style']):
        script.decompose()

    text = soup.get_text()
    lines = (line.strip() for line in text.splitlines())
    chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
    text = '\n'.join(chunk for chunk in chunks if chunk)
...