在用户单击“5551437662”之前,电话号码是隐藏的(5551437662),但它在onclick
参数中。。。我可以使用什么选项从下面的HTML中获取电话号码。。。?在
<html>
<body>
<h3 id="resultTelBar">
<span onclick="showFullNumber(this, '555 1437662');
dcsMultiTrack('DCSext._mainreq','','DCSext.linktype',
'telephone show','DCSext.linkplace','','DCSext.linkvalue','555 1437662',
'DCSext.show_listingId','SA_6597739_4638_003722_8396251_IYMX',
DCSext.show_zoningUsed','0','DCSext.show_resultNumber','1')"
>086 143Â ....</span>
</h3>
</body>
</html>
信息嵌入在一个脚本中,该脚本以字符串的形式包含在标记属性中?那是。。。很不幸。在
(编辑:为了澄清,我假设这里的问题是“如果输入这个不幸的html/javascript,我怎么能用beauthoulsoup解析出电话号码呢?”。如果不正确,请告知。)
我想最简单的事情是隔离javascript字符串,然后使用regex来提取数字。然而,regex部分将是一个PITA,相当脆弱。在
假设soup是BeautifulSoup对象,
soup.find('h3', id='resultTelBar').span['onclick']
将得到字符串。然后使用re.search
来解析第一行之外的数字。使用什么样的正则表达式取决于结果的规则性(是否每个javascript字符串都是这样格式化的,包括换行符)?等等)以及您需要它的健壮性,例如外国电话号码,或者在将来的javascript数据版本中稍作调整。在我注意到了
beautyfulsoup
标记,但建议您使用lxml作为变体。 如果你愿意,你可以用它。我不太关心正则表达式,如果它在某些情况下不起作用,你可以改进它。在相关问题 更多 >
编程相关推荐