Beautifulsoup无法识别具有特殊字符的内容。来自zabbix的内容

Beautifulsoup无法识别具有特殊字符的内容。来自zabbix的内容

问题描述:

我尝试获取zabbix主页的内容,其中页面上有一部分称为最后20个问题。Beautifulsoup无法识别具有特殊字符的内容。来自zabbix的内容

import re 
some_page=session.get(url,headers=header).content 
soup=BeautifulSoup(some_page,'lxml') 
print soup.findAll('td',{'class':'average-bg'}) 

soup is as following 
<td><span class='\"link-action\"' data-menu-popup='\"{"type":"host","hostid":"10457","showGraphs":true,"showScreens":true,"showTriggers":true,"hasGoTo":true,"scripts":[{"name":"Detect' operating="" system&quot;,&quot;scriptid&quot;:&quot;3&quot;,&quot;confirmation&quot;:&quot;&quot;},{&quot;name&quot;:&quot;ping&quot;,&quot;scriptid&quot;:&quot;1&quot;,&quot;confirmation&quot;:&quot;&quot;},{&quot;name&quot;:&quot;traceroute&quot;,&quot;scriptid&quot;:&quot;2&quot;,&quot;confirmation&quot;:&quot;&quot;}]}\"="">ELK211&lt;\/span&gt;&lt;\/td&gt;<td class='\"average-bg\"'><span #00aa00&quot;&gt;ok&lt;\\\="" #dc0000&quot;&gt;problem&lt;\\\="" &quot;&quot;,="" &quot;max-width:="" '&lt;div&gt;&lt;table="" 00:15:36&lt;\\\="" 01:40:36&lt;\\\="" 01:44:36&lt;\\\="" 01:51:36&lt;\\\="" 04:07:36&lt;\\\="" 06:56:36&lt;\\\="" 08:02:36&lt;\\\="" 08:45:36&lt;\\\="" 09:15:36&lt;\\\="" 09:58:36&lt;\\\="" 10:11:36&lt;\\\="" 10d="" 10h&lt;\\\="" 11:59:36&lt;\\\="" 11h="" 11h&lt;\\\="" 12:39:36&lt;\\\="" 12d="" 12h="" 12h&lt;\\\="" 12m&lt;\\\="" 13:37:36&lt;\\\="" 13h&lt;\\\="" 14h="" 15m&lt;\\\="" 16d="" 16m&lt;\\\="" 17:58:36&lt;\\\="" 17h&lt;\\\="" 17m&lt;\\\="" 18d="" 19d="" 19h="" 19m&lt;\\\="" 1h&lt;\\\="" 20d="" 21:30:36&lt;\\\="" 22:18:36&lt;\\\="" 22:49:36&lt;\\\="" 22h="" 22h&lt;\\\="" 23:58:36&lt;\\\="" 23:58:37&lt;\\\="" 23h="" 25m&lt;\\\="" 26m&lt;\\\="" 2d="" 2h&lt;\\\="" 30m="" 32m&lt;\\\="" 39s&lt;\\\="" 3h="" 3h&lt;\\\="" 40m&lt;\\\="" 47m&lt;\\\="" 4h&lt;\\\="" 4m&lt;\\\="" 500px&quot;);\"="" 56m&lt;\\\="" 57m&lt;\\\="" 58m&lt;\\\="" 59m="" 59s&lt;\\\="" 6h="" 6m&lt;\\\="" 7h&lt;\\\="" 8m&lt;\\\="" 9h&lt;\\\="" 9m&lt;\\\="" class='\"link-action\"' false,="" href="&quot;zabbix.php?action=acknowledge.edit&amp;eventids[]=2174204&amp;backurl=zabbix.php%3Faction%3Ddashboard.view&quot;&gt;No&lt;\\\/a&gt;&lt;\\\/td&gt;&lt;\\\/tr&gt;&lt;\\\/tbody&gt;&lt;\\\/table&gt;&lt;\\\/div&gt;'," id='"t5947401f69c53"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Time&lt;\\\/th&gt;&lt;th&gt;Status&lt;\\\/th&gt;&lt;th&gt;Duration&lt;\\\/th&gt;&lt;th&gt;Age&lt;\\\/th&gt;&lt;th&gt;Ack&lt;\\\/th&gt;&lt;\\\/tr&gt;&lt;\\\/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;2017-06-18' onclick='\"hintBox.showStaticHint(event,' onmouseover='\"hintBox.HintWraper(event,' red&quot;="" span&gt;&lt;\\\="" style='"color:' td&gt;&lt;td&gt;&lt;a="" td&gt;&lt;td&gt;&lt;span="" td&gt;&lt;td&gt;11d="" td&gt;&lt;td&gt;12d="" td&gt;&lt;td&gt;1d="" td&gt;&lt;td&gt;1h="" td&gt;&lt;td&gt;1m="" td&gt;&lt;td&gt;21h="" td&gt;&lt;td&gt;27d="" td&gt;&lt;td&gt;28d="" td&gt;&lt;td&gt;29d="" td&gt;&lt;td&gt;2h="" td&gt;&lt;td&gt;2m="" td&gt;&lt;td&gt;3d="" td&gt;&lt;td&gt;3h="" td&gt;&lt;td&gt;48m&lt;\\\="" td&gt;&lt;td&gt;4m&lt;\\\="" td&gt;&lt;td&gt;6h="" td&gt;&lt;td&gt;7d="" td&gt;&lt;td&gt;7m&lt;\\\="" td&gt;&lt;td&gt;8h="" td&gt;&lt;td&gt;9h="" this,="">Free disk space is less than 10% on volume \/data&lt;\/span&gt;&lt;\/td&gt; 

我注意到类是什么样子<td class='\"average-bg\"'>,所以有两个(\“)的TD内,BS不能识别它。我试图删除\”,它似乎工作但整个页面包含很多像这样的字符。替换它们会导致一些其他问题。 同样在最后,我没有得到,而是我得到了&lt;\/td&gt;

任何想法如何我可以得到像'<td>',</td>,体面的格式,并得到我想要的内容。从容量上讲,我只需要'可用磁盘空间低于卷/数据的10%'和'ELK211'。 我试过用html.parser替换lxml,但它是一样的交易。

+0

你能提供的网址呢? –

双引号是类名的一部分。修改你的代码是这样的:

soup.findAll('td', class_='"average-bg"'}) 

soup.findAll('td',{'class':'"average-bg"'}) 
+0

它与双引号无关。这是'/'阻止BS识别班级。而且zabbix似乎是我不能简单地使用bs过滤我想要的内容的唯一情况。不管怎样,谢谢你。 –