使用beautifulsoup4从div中提取特定文本

时间:2017-02-14 00:30:27

标签: python html css bs4

我正在使用BS4和Python 3.5解析网页。 尝试仅从div中提取用户名(链接文本),如下所示:

<div class="about"><a href="es_viewprofile.aspx?profile_id=110181766">claudiakenzo</a>&nbsp;33&nbsp;&nbsp;&nbsp;&nbsp;Pasar el rato&nbsp;&nbsp;&nbsp;<font color="green">En línea</font></div>

Mi目标只是获得div的第一部分,在这种情况下,字符串“claudiakenzo”

这是我尝试使用的代码:

            for link in soup.find_all("div", {'class': 'about'}):
            print(username = link.text)

理论上我应该得到我想要的东西,但不是......我得到的是输出:

claudiakenzo 33    Pasar el rato   En línea

我不想要它的“33”,“Pasar el rato”或“Enlínea”部分。 我做错了什么,以及提取我需要的正确代码是什么? 不幸的是,一些用户名也包含数字,因此使用re很复杂......但我觉得必须有一种比使用re更简单的方法。

PS-如果有更容易解决Selenium的问题,我也愿意尝试。 谢谢!

2 个答案:

答案 0 :(得分:0)

花一些时间阅读BS4文档。同时这应该可以解决你的问题:

for anchor in soup.select('div.about a'):
    print(anchor.text)

答案 1 :(得分:0)

谢谢。 发布后我发现了一个解决方案:

username = link.text.split()[0]

这似乎让我得到了我需要的东西。