首页 > 解决方案 > BeautifulSoup - 查找并提取标题/H1 之后和 H2 之前的所有文本

问题描述

所以我正在制作一个在谷歌上运行的刮板,并使用我输入的关键字抓取第一个链接。然后它将抓取该网站上的文章并将其保存到 .csv 文件中。

我让刮刀成功地抓取了每个 H2 标题和每个 H2 之间的文本。

但是,H1/Title 后面很少有 P 标签,所以我不能像对 H2 那样做以下事情:

for header in soup.find_all('h2'):
            nextNode = header
            h2list.append(nextNode.text)
            f = open(f"{query}-h2-{h2}.txt","w+")
            while True:
                nextNode = nextNode.nextSibling
                    if nextNode.name == "h2":
                      #do something
                    if nextNode.name == "p":
                      #do something

我的工作是:

for div in soup.find_all('div'):
        for child in div:
            if child is not None:
                if child.name == 'p':
                   #do something
                if child.name == 'h2':
                   break

但问题是发现很多随机文本不在标题之后和下一个 H2 之前,例如侧边栏文本等......

有没有更有效的方法来获取标题之后和 H2 之前的文本,而不获取文章正文中没有的其他随机内容?

PS:这是针对不同网站的,必须是通用的,所以我不能使用soup.find by ID 或 CLASS

标签: pythonpython-3.xpython-2.7beautifulsouppython-requests

解决方案


推荐阅读