Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用BeautifulSoup分析单个带引号的属性值中的非转义撇号_Python_Html_Attributes_Escaping_Beautifulsoup - Fatal编程技术网

Python 使用BeautifulSoup分析单个带引号的属性值中的非转义撇号

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/

从一个网页,我想得到所有的链接和标题字符串。我用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/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”)

任何现代浏览器也不会:

Firefox

Chrome

IE 11

如果要在单个带引号的属性值中表示撇号,则需要使用
&apos字符实体引用:

>>美化小组(“”
... 
... 
... """)

或者,可以使用双引号属性值:

>>美化小组(“”
... 
... 
... """)

问题不在于美化组,而在于无效的HTML。根据,单个引用的属性值具有以下语法:

属性名称,后跟零个或多个空格字符,后跟单个U+003D等号字符,后跟零个或多个空格字符,后跟单个U+0027撇号字符('),后跟属性值,除上述属性值要求外,不得包含任何文字U+0027撇号字符('),最后后跟第二个U+0027撇号字符(')

虽然BeautifulSoup的所有解析器都会尝试解析您问题中的无效HTML,但没有一个解析器会满足您的要求:

美化组(src,“html.parser”)

美化组(src,“lxml”)

美化组(src,“html5lib”)

任何现代浏览器也不会:

Firefox

Chrome

IE 11

如果要在单个带引号的属性值中表示撇号,则需要使用
&apos字符实体引用:

>>美化小组(“”
... 
... 
... """)

或者,可以使用双引号属性值:

>>美化小组(“”
... 
... 
... """)

问题不在于美化组,而在于无效的HTML。根据,单个引用的属性值具有以下语法:

属性名称,后跟零个或多个空格字符,后跟单个U+003D等号字符,后跟零个或多个空格字符,后跟单个U+0027撇号字符('),后跟属性值,除上述属性值要求外,不得包含任何文字U+0027撇号字符('),最后后跟第二个U+0027撇号字符(')

虽然BeautifulSoup的所有解析器都会尝试解析您问题中的无效HTML,但没有一个解析器会满足您的要求:

美化组(src,“html.parser”)

美化组(src,“lxml”)

美化组(src,“html5lib”)

任何现代浏览器也不会:

Firefox

Chrome

IE 11

如果要在单个带引号的属性值中表示撇号,则需要使用
&apos字符实体引用:

>>美化小组(“”
... 
... 
... """)

或者,可以使用双引号属性值:

>>美化小组(“”
... 
... 
... """)

问题不在于美化组,而在于无效的HTML。根据,单个引用的属性值具有以下语法:

属性名称,后跟零个或多个空格字符,后跟单个U+003D等号字符,后跟零个或多个空格字符,后跟单个U+0027撇号字符('),后跟属性值,除上述属性值要求外,不得包含任何文字U+0027撇号字符('),最后后跟第二个U+0027撇号字符(')

虽然BeautifulSoup的所有解析器都会尝试解析您问题中的无效HTML,但没有一个解析器会满足您的要求:

美化组(src,“html.parser”)

美化组(src,“lxml”)

美化组(src,“html5lib”)

任何现代浏览器也不会:

Firefox

Chrome

IE 11

如果您想在单个qu中表示撇号
A small secret for better estimates #4/16/2014 8:10:30 AM
Don