[英]Extract phone number from html in Python
電話號碼被隱藏(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>
我注意到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
信息嵌入在標記屬性中作為字符串包含的腳本中? 那......非常不幸。
(編輯:為了澄清,我假設這里的問題是“給出這個不幸的html / javascript作為輸入,我如何用BeautifulSoup解析出電話號碼。”請告知這是不正確的。)
我想最簡單的方法是隔離那個javascript字符串,然后使用正則表達式來提取數字。 但是,正則表達式部分將是PITA並且相當脆弱。
soup.find('h3', id='resultTelBar').span['onclick']
會得到字符串,假設湯是BeautifulSoup對象。 然后使用re.search
來解析第一行中的數字。 你使用什么樣的正則表達式取決於結果的規律程度(每個javascript字符串是以這種方式格式化的,包括換行符等等)以及你需要它多么強大,例如外國電話號碼,或者javascript in此數據的未來版本略有調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.