使用Beautiful Soup获取网站的特定部分4

时间:2017-03-10 15:08:41

标签: beautifulsoup

我找到了使用Beautiful Soup 4找东西的基础知识。但是现在我遇到了一个特定的问题。我想从以下代码的数据中删除“2DKT94P”:

<div class="js-object   listitem_wrap " data-estateid="45784882" data-oid="2DKT94P">
<div class="listitem relative js-listitem ">

关于我如何做到这一点的任何指示?我还要感谢一个高级教程的指针,它涵盖了这个,和/或我可以在官方文档中找到这个的链接,因为我没有认出正确的部分......

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果您的数据格式良好,您可以通过以下方式执行此操作:

from bs4 import BeautifulSoup

example = """
<div class="js-object   listitem_wrap " data-estateid="45784882" data-
oid="2DKT94P">
<div class="listitem relative js-listitem ">2DKT94P DIV</div>
</div>
<div>other div</div>"""

soup = BeautifulSoup(example, "html.parser")
RandomDIV = soup.find(attrs= {"data-oid":"2DKT94P"})
print (RandomDIV.get_text().strip())

输出:

  

2DKT94P DIV

使用属性here查找有关findfind_all的更多信息。

或通过select

RandomDIV = soup.select("div[data-oid='2DKT94P']")
print (RandomDIV[0].get_text().strip())

详细了解select

修改

完全误解了这个问题。如果您只想搜索data-oid,可以这样做:

soup = BeautifulSoup(example, "html.parser")
RandomDIV = soup.find_all(lambda tag: [t for t in tag.attrs if 
t  == 'data-oid'])
for div in RandomDIV:
    #data-oid
    print(div["data-oid"])
    #text
    print (div.text.strip())

了解详情here

答案 1 :(得分:1)

您应该使用class属性找到div标记,然后获取它的data-oid属性

div = soup.find("div", class_="js-object")

oid = div['data-oid']