Python 使用BeautifulSoup分析单个带引号的属性值中的非转义撇号
从一个网页,我想得到所有的链接和标题字符串。我用BeautifulSoup 4刮。网页上的链接如下所示:Python 使用BeautifulSoup分析单个带引号的属性值中的非转义撇号,python,html,attributes,escaping,beautifulsoup,Python,Html,Attributes,Escaping,Beautifulsoup,从一个网页,我想得到所有的链接和标题字符串。我用BeautifulSoup 4刮。网页上的链接如下所示: <a href='http://www.example1.com' title='A small secret for better estimates #4/16/2014 8:10:30 AM'> Example 1 </a> <a href='http://www.example2.com' title='Don't make me think #4/9/
<a href='http://www.example1.com' title='A small secret for better estimates #4/16/2014 8:10:30 AM'> Example 1 </a>
<a href='http://www.example2.com' title='Don't make me think #4/9/2014 4:36:07 AM'> Example 2</a>
问题:BeautifulSoup不知道如何正确转义字符串中的单引号,即“
因此,例如2,它将只输出Don
:
A small secret for better estimates #4/16/2014 8:10:30 AM
Don
问题不在于BeautifulSoup,而在于您的HTML,它是无效的。根据,单个引用的属性值具有以下语法: 属性名称,后跟零个或多个空格字符,后跟单个U+003D等号字符,后跟零个或多个空格字符,后跟单个U+0027撇号字符('),后跟属性值,除上述属性值要求外,不得包含任何文字U+0027撇号字符('),最后后跟第二个U+0027撇号字符(') 虽然BeautifulSoup的所有解析器都会尝试解析您问题中的无效HTML,但没有一个解析器会满足您的要求: 美化组(src,“html.parser”)
美化组(src,“lxml”)
美化组(src,“html5lib”)
任何现代浏览器也不会:
FirefoxChrome
IE 11
如果要在单个带引号的属性值中表示撇号,则需要使用
&apos代码>字符实体引用:
>>美化小组(“”
...
...
... """)
或者,可以使用双引号属性值:
>>美化小组(“”
...
...
... """)
问题不在于美化组,而在于无效的HTML。根据,单个引用的属性值具有以下语法:
属性名称,后跟零个或多个空格字符,后跟单个U+003D等号字符,后跟零个或多个空格字符,后跟单个U+0027撇号字符('),后跟属性值,除上述属性值要求外,不得包含任何文字U+0027撇号字符('),最后后跟第二个U+0027撇号字符(')
虽然BeautifulSoup的所有解析器都会尝试解析您问题中的无效HTML,但没有一个解析器会满足您的要求:
美化组(src,“html.parser”)
美化组(src,“lxml”)
美化组(src,“html5lib”)
任何现代浏览器也不会:
FirefoxChrome
IE 11
如果要在单个带引号的属性值中表示撇号,则需要使用
&apos代码>字符实体引用:
>>美化小组(“”
...
...
... """)
或者,可以使用双引号属性值:
>>美化小组(“”
...
...
... """)
问题不在于美化组,而在于无效的HTML。根据,单个引用的属性值具有以下语法:
属性名称,后跟零个或多个空格字符,后跟单个U+003D等号字符,后跟零个或多个空格字符,后跟单个U+0027撇号字符('),后跟属性值,除上述属性值要求外,不得包含任何文字U+0027撇号字符('),最后后跟第二个U+0027撇号字符(')
虽然BeautifulSoup的所有解析器都会尝试解析您问题中的无效HTML,但没有一个解析器会满足您的要求:
美化组(src,“html.parser”)
美化组(src,“lxml”)
美化组(src,“html5lib”)
任何现代浏览器也不会:
FirefoxChrome
IE 11
如果要在单个带引号的属性值中表示撇号,则需要使用
&apos代码>字符实体引用:
>>美化小组(“”
...
...
... """)
或者,可以使用双引号属性值:
>>美化小组(“”
...
...
... """)
问题不在于美化组,而在于无效的HTML。根据,单个引用的属性值具有以下语法:
属性名称,后跟零个或多个空格字符,后跟单个U+003D等号字符,后跟零个或多个空格字符,后跟单个U+0027撇号字符('),后跟属性值,除上述属性值要求外,不得包含任何文字U+0027撇号字符('),最后后跟第二个U+0027撇号字符(')
虽然BeautifulSoup的所有解析器都会尝试解析您问题中的无效HTML,但没有一个解析器会满足您的要求:
美化组(src,“html.parser”)
美化组(src,“lxml”)
美化组(src,“html5lib”)
任何现代浏览器也不会:
FirefoxChrome
IE 11
如果您想在单个qu中表示撇号
A small secret for better estimates #4/16/2014 8:10:30 AM
Don