标记的美好的汤检查标记

时间:2013-01-13 19:04:32

标签: python python-3.x screen-scraping beautifulsoup scraper

我使用Beautiful Soup 4来刮页。有一块我不想要的文字:

<p class="MsoNormal" style="text-align: center"><b>
                            <span lang="EN-US" style="font-family: Arial; color: blue">
                            <font size="4">1 </font></span>
                            <span lang="AR-SA" dir="RTL" style="font-family: Arial; color: blue">
                            <font size="4">&#1600;</font></span><span lang="EN-US" style="font-family: Arial; color: blue"><font size="4"> 
                            с&#1199;р&#1241; фати&#1211;&#1241;</font></span></b></p>

使它独特的是它有一个标签。我已经使用findall()来获取所有

标签。所以现在我有一个for循环:

for el in doc.findall('p'):
    if el.hasChildTag('b'):
        break;

不幸的是,bs4没有&#34; hasChildTag&#34;功能

2 个答案:

答案 0 :(得分:4)

也应该可以使用css选择器。

http://www.crummy.com/software/BeautifulSoup/bs4/doc/#css-selectors

soup.select("p b")

答案 1 :(得分:3)

for elem in soup.findAll('p'):
    if elem.findChildren('b'):
        continue #skip the elem with "b", and continue with the loop
    #do stuff with the elem