Как получить значение HTML-тега, используя re - PullRequest
0 голосов
/ 04 декабря 2018

Я извлекаю HTML-код, содержащийся на веб-сайте, используя библиотеку запросов Python.Затем мне нужно получить информацию из этих HTML-кодов.Но почему-то я не получил эти данные.Как мне получить эти данные?

HTML

<span data-testid="vuln-cvssv2-additional">
    Victim must voluntarily interact with attack mechanism
    <br/>
    Allows unauthorized disclosure of information
    <br/>
    Allows unauthorized modification
    <br/>
</span>

Python

import requests
import re

link = "https://nvd.nist.gov/vuln/detail/CVE-2017-10119"
f = requests.get(link)
deneme = str(f.text)

re_base_vector = r'\<span data-testid\s*\=\s*\"vuln-cvssv2- additional"\s*\>(.*?(\n))+.*?\n\<\\span\>'
find_base_vector = re.search(re_base_vector, deneme)

print(find_base_vector)

print(find_base_vector.group(0))

Вывод, который я хочу

Victim must voluntarily interact with attack mechanism. 
Allows unauthorized disclosure of information. 
Allows unauthorized modification

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

BeautifulSoup поможет вам лучше разобраться и перемещаться по html.Просто и легко разобрать данный HTML.

См .:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/

0 голосов
/ 04 декабря 2018

Regex обычно плохая идея с HTML.Прочитайте его с помощью HTML-парсера, используя BeautifulSoup, затем используйте селектор атрибутов:

soup.select_one("span[data-testid='vuln-cvssv2-additional']")

Например

import requests
from bs4 import BeautifulSoup

html='''
<span data-testid="vuln-cvssv2-additional">
    Victim must voluntarily interact with attack mechanism
    <br/>
    Allows unauthorized disclosure of information
    <br/>
    Allows unauthorized modification
    <br/>
</span>
'''
soup = BeautifulSoup(html, "lxml")
item = soup.select_one("span[data-testid='vuln-cvssv2-additional']").text
print(item)

image

...