美丽之群识别属性的周围特征

2024-10-06 19:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

很简单,我想知道一个属性是被“”包围还是根本不被包围。 例如:

html = """<input class="form-control" name='searchString' type=text value= "myString"/>"""

循环此标记的属性值将返回不带环绕字符的值,在name的情况下,环绕字符为“”,在type teres中,环绕字符为no,在value中,环绕字符为“”。 那么,有没有什么方法可以用beautifulsoup来实现呢?或者我应该自己使用regex/解析字符串吗? 提前谢谢。你知道吗


Tags: textname标记forminput属性valuehtml
2条回答

html.parser使用下面的正则表达式来提取元素属性

html = """<input class="form-control" name='searchString' type=text value= "myString"/>"""

attrfind = re.compile(
    r'((?<=[\'"\s/])[^\s/>][^\s/=>]*)(\s*=+\s*'
    r'(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?(?:\s|/(?!>))*')
attrs = attrfind.findall(html)

for attr in attrs:
    print('{}: {}'.format(attr[0], attr[2]))

结果

class: "form-control"
name: 'searchString'
type: text
value: "myString"

解析器将“更正”您提供给BeautifulSoup的标记。你知道吗

from bs4 import BeautifulSoup
html = """<input class="form-control" name='searchString' type=text value= "myString"/>"""
print(BeautifulSoup(html,'lxml'))
print(BeautifulSoup(html,'html5lib'))
print(BeautifulSoup(html,'html.parser'))
#<html><body><input class="form-control" name="searchString" type="text" value="myString"/></body></html>
#<html><head></head><body><input class="form-control" name="searchString" type="text" value="myString"/></body></html>
#<input class="form-control" name="searchString" type="text" value="myString"/>

正如你所看到的,所有的引号现在都是"。要回答你的问题-我认为BeautiifulSoup是不可能的。使用regex是可能的(您必须将它应用于您的请求-响应)。你知道吗

相关问题 更多 >