BeautifulSoup:在定义的h2标签之间拉p标签

时间:2017-07-20 02:37:49

标签: beautifulsoup html-parsing python-3.5

这让我有点困惑。我试图通过“新基金”和“新基金”的名称从'h2'标签下的'p'标签中提取所有文本。 'p'标签的数量对于每个页面都不一致,所以我想到某种while循环,我尝试的东西不起作用。每个

标签的格式通常是带有“强”的公司名称,然后列出文本以及其他资助/投资的“强”标签。

一旦我能够正确地解析它,我们的目标是将公司名称从“强”标签中导出文本和投资公司/人(从'p'块中的'强'标签后面来做一些数据分析。

任何帮助都会受到赞赏 - 是的,我已经查看了其他各种帮助页面,但我所做的尝试都没有成功,所以我来到这里。

import requests
page = requests.get("https://www.strictlyvc.com/2017/06/13/strictlyvc-june-12-2017/")
page
page.content
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')
entrysoup = soup.find(class_ = 'post-entry')

//试图拉出正确的段落,但这些只选择下一个,我想要“新基金”和“新基金”下的所有

标签。 '新基金'(基本上,直到下一个标签不是其中之一。

print(entrysoup.find('h2', text = 'New Fundings').find_next_sibling('p'))
print(entrysoup.find('h2', text = 'New Funds').find_next_sibling('p'))

//这是更接近的,但我不确定当它达到非新基金/新基金标签时如何让它停止

for strong_tag in entrysoup.find_all('strong'):
    print (strong_tag.text, strong_tag.next_sibling)

1 个答案:

答案 0 :(得分:0)

我认为这是我现在可以得到的最好结果。如果它不是你想要的东西让我知道所以我可以更多地提琴。如果它标记为答案:)

    import requests
    import bs4

    page = requests.get("https://www.strictlyvc.com/2017/06/13/strictlyvc-june-12-2017/")
    soup =bs4.BeautifulSoup(page.content, 'html.parser')
    entrysoup = soup.find(class_ = 'post-entry')

    Stop_Point = 'Also Sponsored By . . .'

    for strong_tag in entrysoup.find_all('h2'):

        if strong_tag.get_text() == 'New Fundings':
            for sibling in strong_tag.next_siblings:
                if isinstance(sibling, bs4.element.Tag):
                    print(sibling.get_text())

                    if sibling.get_text() == Stop_Point:
                        break

                if sibling.name == 'div':
                    for children in sibling.children:
                        if isinstance(children, bs4.element.Tag):
                            if children.get_text() == Stop_Point:
                                break

                            print(children.get_text())