尝试使用Python和BeautifulSoup来提取精确值

问题描述 投票:1回答:1

嗨伙计们,我有一个我需要解析的HTML页面。所以我需要姓名和电子邮件地址。

姓: 电子邮件地址:

所以我尝试了这个:

from bs4 import BeautifulSoup

def get_page_data():
    soup = BeautifulSoup(html, 'lxml')
    email = soup.find(id='email')
    first = soup.find(id='name.first')
    data = {'first': first,
            'email': email
            }

 return data

它给了我输出:

{
    name:id="name.last" name="name.last" tabindex="2" type="text" value="**Name I need**"/>
    <br /> 
    email:id="email" name="email" tabindex="0" style="background-color:#D4D0C8;" readonly="readonly" type="text" value="**Email I need**" size="30" maxlength="50"/><br />
}

我试图将每个转换为字符串并切片。输出是:name:value =“我需要的名字”,电子邮件:value =“我需要的电子邮件”

但它可能不适用于其他页面。

尝试.next_sibling或previou_sibling但返回:无。

我相信有更优雅的方法可以解决这个问题。也许还有我或错过了来自BeautifulSoup的smth。

任何建议都会很高兴。

先感谢您。

python beautifulsoup
1个回答
0
投票

要提取属性,您需要在选择元素后调用属性名称。

def get_page_data():
    soup = BeautifulSoup(html, 'lxml')
    email = soup.find(id='email')
    first = soup.find(id='name.first')
    data = {'first': first['value'],
            'email': email['value']
            }

 return data

希望这可以帮助!干杯!

© www.soinside.com 2019 - 2024. All rights reserved.