无法分析电话号码和地址

2024-09-26 22:51:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了一个脚本,从一些元素中获取电话号码和地址。问题是我分析电话号码的方式肯定很混乱。地址我也可以。然而,有没有更干净或更好的方法?你知道吗

嵌入数据的元素:

html_content='''
    <div style="">
        <strong>Pamela Banchy, Chief Information Officer</strong>
            <br>Western Reserve Hospital<br> 
            <br>Lyndhurst, OH <br>
                <a href="mailto:pbanchy@westernreservehospital.org">pbanchy@westernreservehospital.org</a>
            <br>(330) 971-7456<br>
    </div>
    '''

我用来解析电话号码的表达式和脚本:

from lxml.html import fromstring

tree = fromstring(html_content)
phone = ' '.join([elem.text_content().strip().split()[-2] for elem in tree.cssselect("div")])
phone1 = ' '.join([elem.text_content().strip().split()[-1] for elem in tree.cssselect("div")])
print(phone+phone1)

结果:

(330)971-7456

顺便说一句,地址是Lyndhurst, OH,电话号码是(330)971-7456,我已经把它弄得乱七八糟了。你知道吗


Tags: brdiv脚本tree元素地址html电话号码
3条回答

另一种方法是:

text_nodes = [node for node in tree.cssselect('div')[0].itertext() if node.split()]
adress, phone = text_nodes[2], text_nodes[4]

你可以通过换行来分割你的文本,这样你就可以用最少的后处理来更方便地获取地址和电话号码。你知道吗

for elem in tree.cssselect('div'):
    elem = elem.text_content().split('\n')
    address = elem[-4].strip()
    phone = elem[-2].replace(' ', '')

我认为更好的方法是使用xpath。 address, phone = tree.xpath('./div/br/text()')[-2:]

相关问题 更多 >

    热门问题