【问题标题】:Get the text which is found inside a nested Div tag using python BeautifulSoup使用 python BeautifulSoup 获取在嵌套 Div 标记中找到的文本
【发布时间】:2020-06-26 01:57:16
【问题描述】:

我正在尝试抓取嵌套 div 之间的文本,但无法获取文本(此处的文本)。文本位于嵌套 div 内。在这打字。因此,正如您在下面看到的,我想打印出在所有“div”中找到的文本(TEXT HERE),因为文本不在“p”标签内,所以我无法打印文本。我正在使用 BeautifulSoup 提取文本。当我运行下面的代码时,它不会打印出任何内容。 'div'的结构是

<div class="_333v _45kb".....
    <div class="_2a_i" ...............
        <div class="_2a_j".......</div>
        <div class="_2b04"...........
            <div class="_14v5"........
                <div class="_2b06".....
                    <div class="_2b05".....</div>
                    <div id=............>**TEXT HERE**</div>
                </div>
            </div>
        </div>
    </div>
</div>

我的代码:

theurl = "here URL"
thepage = urllib.request.urlopen(theurl)
soup = BeautifulSoup(thepage, "html.praser")
comm_list = soup.findAll('div', class_="_333v _45kb")
for lists in comm_list:
    print(comm_list.find('div').text)

【问题讨论】:

  • 请出示您的代码minimal reproducible example。在这种情况下,您似乎可以通过 id 访问 div 标签,然后获取 text 属性
  • @buran 我更新了这个问题。你现在可以在那里看到代码
  • 嵌套最多的 div 的 id 是什么 - &lt;div id=............&gt;**TEXT HERE**&lt;/div&gt;?那是您要查找的 div,没有关于它的信息,因此我们可以提供帮助。您不需要所有其余部分,循环等。
  • @buran 每个文本的 id 都不同,因此所有文本都没有通用 id,我无法使用它
  • OP 想要抓取 FB cmets(请参阅我的回答中的 cmets)。这需要更多的关注。就目前而言,这是 XY 问题。

标签: python beautifulsoup


【解决方案1】:

因为 OP 继续没有提供足够的信息,这里是示例

from bs4 import BeautifulSoup

html = '''
<div class="foo">
    <div class="bar">
        <div class="spam">Some Spam Here</div>
        <div id="eggs">**TEXT HERE**</div>
    </div>
</div>
'''

soup = BeautifulSoup(html, 'html.parser')

# This will print all the text
div = soup.find('div', {'class':'foo'})
print(div.text)


print('\n----\n')
# if other divs don't have id
for div in soup.findAll('div'):
    if div.has_attr('id'):
        print(div.text)

输出

Some Spam Here
**TEXT HERE**


---------
**TEXT HERE**

【讨论】:

  • 当我使用您的示例运行代码时,它返回:AttributeError: 'NoneType' object has no attribute 'text': The error occurred on print(div.text) part of (# This will print all上面示例中的文本部分)
  • 它对我有用,我不知道你在做什么。见repl.it/repls/PlumImpureClosedsource
  • 我想得到的是cmets中的文字。见repl.it/repls/ProperHelpfulNet
  • 所以,这原来是 XY 问题 - 你想从 Facebook 上抓取 cmets。您知道您需要先登录才能查看它,对吧?最好的方法是只使用 Facebook API,而不是屏幕报废。
  • 我确实先登录然后执行这个,所以你说除了Facebook API没有其他方法可以抓取评论
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 2020-09-28
  • 2018-04-06
  • 1970-01-01
相关资源
最近更新 更多