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","scriptid":"3","confirmation":""},{"name":"ping","scriptid":"1","confirmation":""},{"name":"traceroute","scriptid":"2","confirmation":""}]}\"="">ELK211<\/span><\/td><td class='\"average-bg\"'><span #00aa00">ok<\\\="" #dc0000">problem<\\\="" "",="" "max-width:="" '<div><table="" 00:15:36<\\\="" 01:40:36<\\\="" 01:44:36<\\\="" 01:51:36<\\\="" 04:07:36<\\\="" 06:56:36<\\\="" 08:02:36<\\\="" 08:45:36<\\\="" 09:15:36<\\\="" 09:58:36<\\\="" 10:11:36<\\\="" 10d="" 10h<\\\="" 11:59:36<\\\="" 11h="" 11h<\\\="" 12:39:36<\\\="" 12d="" 12h="" 12h<\\\="" 12m<\\\="" 13:37:36<\\\="" 13h<\\\="" 14h="" 15m<\\\="" 16d="" 16m<\\\="" 17:58:36<\\\="" 17h<\\\="" 17m<\\\="" 18d="" 19d="" 19h="" 19m<\\\="" 1h<\\\="" 20d="" 21:30:36<\\\="" 22:18:36<\\\="" 22:49:36<\\\="" 22h="" 22h<\\\="" 23:58:36<\\\="" 23:58:37<\\\="" 23h="" 25m<\\\="" 26m<\\\="" 2d="" 2h<\\\="" 30m="" 32m<\\\="" 39s<\\\="" 3h="" 3h<\\\="" 40m<\\\="" 47m<\\\="" 4h<\\\="" 4m<\\\="" 500px");\"="" 56m<\\\="" 57m<\\\="" 58m<\\\="" 59m="" 59s<\\\="" 6h="" 6m<\\\="" 7h<\\\="" 8m<\\\="" 9h<\\\="" 9m<\\\="" class='\"link-action\"' false,="" href=""zabbix.php?action=acknowledge.edit&eventids[]=2174204&backurl=zabbix.php%3Faction%3Ddashboard.view">No<\\\/a><\\\/td><\\\/tr><\\\/tbody><\\\/table><\\\/div>'," id='"t5947401f69c53"><thead><tr><th>Time<\\\/th><th>Status<\\\/th><th>Duration<\\\/th><th>Age<\\\/th><th>Ack<\\\/th><\\\/tr><\\\/thead><tbody><tr><td>2017-06-18' onclick='\"hintBox.showStaticHint(event,' onmouseover='\"hintBox.HintWraper(event,' red"="" span><\\\="" style='"color:' td><td><a="" td><td><span="" td><td>11d="" td><td>12d="" td><td>1d="" td><td>1h="" td><td>1m="" td><td>21h="" td><td>27d="" td><td>28d="" td><td>29d="" td><td>2h="" td><td>2m="" td><td>3d="" td><td>3h="" td><td>48m<\\\="" td><td>4m<\\\="" td><td>6h="" td><td>7d="" td><td>7m<\\\="" td><td>8h="" td><td>9h="" this,="">Free disk space is less than 10% on volume \/data<\/span><\/td>
我注意到类是什么样子<td class='\"average-bg\"'>
,所以有两个(\“)的TD内,BS不能识别它。我试图删除\”,它似乎工作但整个页面包含很多像这样的字符。替换它们会导致一些其他问题。 同样在最后,我没有得到,而是我得到了<\/td>
任何想法如何我可以得到像'<td>',</td>,
体面的格式,并得到我想要的内容。从容量上讲,我只需要'可用磁盘空间低于卷/数据的10%'和'ELK211'。 我试过用html.parser替换lxml,但它是一样的交易。
答
双引号是类名的一部分。修改你的代码是这样的:
soup.findAll('td', class_='"average-bg"'})
或
soup.findAll('td',{'class':'"average-bg"'})
+0
它与双引号无关。这是'/'阻止BS识别班级。而且zabbix似乎是我不能简单地使用bs过滤我想要的内容的唯一情况。不管怎样,谢谢你。 –
你能提供的网址呢? –