簡體   English   中英

從Python中的html中提取電話號碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM