在其他div内的div之后剪贴文本

时间:2018-10-10 19:46:52

标签: python html beautifulsoup

我有html代码:

    <h3 class="s-item__title s-item__title--has-tags" role="text">
        <div>
            <div class="s-item__title-tag">SOLD  Oct 9, 2018</div>
        </div>
        <span class="LIGHT_HIGHLIGHT">New Listing</span>MAX DELL PRECISION M4800 I7-4930XM EXTREME EDITION 3GHz 16GB 500GB SSD K2100 FHD
    </h3>

我想获得“ MAX DELL PRECISION M4800 I7-4930XM EXTREME EDITION 3GHz 16GB 500GB SSD K2100 FHD”,但是当我这样做时:

pre_title_and_sold=rel_text.findAll("h3",{"class":"s-item__title s-item__title--has-tags"})
print(pre_title_and_sold)

我知道

SOLD  Oct 8, 2018Dell Precision M6500 17" LED Workstation i7 1.6GHz 4GB RAM 111GB HD DVDRW Win 7

我想得到

"MAX DELL PRECISION M4800 I7-4930XM EXTREME EDITION 3GHz 16GB 500GB SSD K2100 FHD"

我想如果我能够删除此部分,则可以执行[0] .text路由(因为我正在浏览网页)

<div class="s-item__title-tag">SOLD  Oct 9, 2018</div>

我试图查看文档,但感到困惑。 我的问题有点类似于Get content after a div within another div,但仍需要澄清。

带有BeautifulSoup的python 3.5赢得了10

1 个答案:

答案 0 :(得分:0)

您必须找到包含文本的实际标签。检查此代码。我提供了2种查找文字的选项!

from bs4 import BeautifulSoup
html = '''<h3 class="s-item__title s-item__title--has-tags" role="text">
        <div>
            <div class="s-item__title-tag">SOLD  Oct 9, 2018</div>
        </div>
        <span class="LIGHT_HIGHLIGHT">New Listing</span>MAX DELL PRECISION M4800 I7-4930XM EXTREME EDITION 3GHz 16GB 500GB SSD K2100 FHD
    </h3>'''

soup = BeautifulSoup(html, 'html.parser')
title = soup.find('h3', attrs={'s-item__title s-item__title--has-tags'}).span.next_sibling#first option
title1 = soup.select('.LIGHT_HIGHLIGHT')[0].next_sibling#second option
print(title)
print(title1)

输出:

MAX DELL PRECISION M4800 I7-4930XM EXTREME EDITION 3GHz 16GB 500GB SSD K2100 FHD