如何使用beautifulsoup从一个HTML页面中删除数据
<div class="accordion-item accordion-item-active">
<p class="accordion-title">
<a href="javascript:void(0)"><span class="accordion-toggle"></span> What different payment modes are available to purchase SysTools products?</a>
</p>
<div class="accordion-content" style="display: block;">
<div>
<p> There are various payment methods available for purchasing SysTools products:</p>
<ul class="list-with-icons list-icons-right-open">
<li>Credit Card/Debit Card</li>
<li>PayPal Account</li>
<li>Pay with Amazon</li>
<li>Purchase Order</li>
<li>Wire Transfer</li>
<li>eCheque Payment</li>
</ul>
<p>We accept all major cards such as MasterCard, VISA, Maestro Card, American Express, etc.</p>
</div>
</div>
</div>
上面的“div”用不同的数据重复,有几个div不包含“ul”,“li”标签,只包含几个“p”标签。当然,我可以单独废弃“p”标签,单独“ul”,“li”标签。但我想按顺序刮掉整个“div”,首先是“p”标签,然后是另一个“p”标签,然后是列表标签,然后将其迭代到其他“div”标签(具有相同的格式) 。
你的问题不是很清楚。虽然我可能已经得到了它。所以这是一个可能适合您需求的功能!
def process_div(div_tag):
"""
Parameter: a div tag.
Returns: lists of p, ul and li tags.
"""
p_tags = [div_tag.find('p', class_ = 'accordion-title'),
div_tag.find('div', class_ = 'accordion-content').find_all('p')]
ul_tag = div_tag.find('div', class_ = 'accordion-content').find('ul')
li_tags = ul_tag.find_all('li')
return p_tags, ul_tag, li_tags
它将按顺序返回div
标签的内容。在较大的try/except
树上使用它时,添加一个html
语句可能会有用。这是我的小演示:
html = """
<div class="accordion-item accordion-item-active">
<p class="accordion-title">
<a href="javascript:void(0)"><span class="accordion-toggle"></span> What different payment modes are available to purchase SysTools products?</a>
</p>
<div class="accordion-content" style="display: block;">
<div>
<p> There are various payment methods available for purchasing SysTools products:</p>
<ul class="list-with-icons list-icons-right-open">
<li>Credit Card/Debit Card</li>
<li>PayPal Account</li>
<li>Pay with Amazon</li>
<li>Purchase Order</li>
<li>Wire Transfer</li>
<li>eCheque Payment</li>
</ul>
<p>We accept all major cards such as MasterCard, VISA, Maestro Card, American Express, etc.</p>
</div>
</div>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
然后,
p_tags, ul_tag, li_tags = process_div(soup.div)
print p_tags
[<p class="accordion-title">\n<a href="javascript:void(0)"><span class="accordion-toggle"></span> What different payment modes are available to purchase SysTools products?</a>\n</p>,
[<p> There are various payment methods available for purchasing SysTools products:</p>,
<p>We accept all major cards such as MasterCard, VISA, Maestro Card, American Express, etc.</p>]]