电话号码被隐藏(555 143 ......),直到用户点击它'555 1437662',但是在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>
答案 0 :(得分:2)
我注意到beautyfulsoup
标记,但建议您使用lxml我的变体。
如果你愿意,你可以使用它。我不太关心正则表达式,如果它在某些情况下不起作用,你可以改进它。
>>> import re
>>> from lxml import etree
>>> etree.fromstring(u'''YOUR HTML''')
>>> onclick = html.xpath('//h3[@id="resultTelBar"]/span/@onclick')[0]
>>> print re.search("showFullNumber\(this,\s*'([\d ]+)'", onclick).group(1)
555 1437662
答案 1 :(得分:0)
信息是否嵌入在标记属性中作为字符串包含的脚本中?那是......非常不幸。
(编辑:为了澄清,我假设这里的问题是“给出这个不幸的html / javascript作为输入,我如何用BeautifulSoup解析出电话号码。”请告知这是不正确的。)
我认为最简单的方法是隔离该javascript字符串然后使用正则表达式来提取数字。但是,正则表达式部分将是PITA并且相当脆弱。
soup.find('h3', id='resultTelBar').span['onclick']
将为您提供字符串,假设汤是BeautifulSoup对象。然后使用re.search
来解析第一行中的数字。你使用什么样的正则表达式取决于结果的规律程度(每个javascript字符串是以这种方式格式化的,包括换行符等等)以及你需要它多么强大,例如外国电话号码,或者javascript in这些数据的未来版本略有调整。