新手python beautifulsou从NewsArti中提取articlebody

2024-09-30 11:34:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下XML部分:

<section class="article-body">
         <!-- <EdIndex> -->
         <div class="squared-inline-picture-offset no-mobile">
          <picture class="lazy square pull-left">
           <img height="" width="" alt="" src="" class="loaded">
           <noscript><img src="" width="" height="" alt="" /></noscript>
          </picture>
         </div>    
         <p>bla1 bla1 bla1</p>
         <p>bla2 bla2 bla2</p>
         <p>bla3 bla3 bla3</p>
         <!-- </EdIndex> -->
         <div class="adv no-mobile">
         </div>
   </section>

我需要提取“bla-bla-bla”部分。 我试过了

 soup = BeautifulSoup(data)
  [...] 
 soup.findAll('section',{"class" : "article-body"})

结果不好:(

有什么提示吗? 有没有什么快速的方法可以使用python和BeautifulSoup从http://schema.org/NewsArticle获取文章正文?你知道吗


Tags: nodivimgarticlesectionbodymobileclass
1条回答
网友
1楼 · 发布于 2024-09-30 11:34:58

当您说('section',{“class”:“article body”})时,您要求的是articale body类。这意味着它会给你很好的。。。一切都回来了。。。。你知道吗

您要做的是在其中指定项。在这种情况下,你可以转到“p” 这样地。你知道吗

>>> soup = BeautifulSoup(data)
>>> p = soup.findAll('p')
>>> print(p)
[<p>bla1 bla1 bla1</p>, <p>bla2 bla2 bla2</p>, <p>bla3 bla3 bla3</p>]
>>> print(p[1].text)
bla2 bla2 bla2

注意:您只能在.text时将其放在列表项上,而不能将其本身放在列表项上。你知道吗

你看,它找到所有的p元素,然后给你一个它找到的每个元素的列表。这将选择所有的p元素,所以如果我想特别选择它,你可以这样做:

soup = BeautifulSoup(data)
result = soup.find('section', {'class': 'article-body'})
results = result.findAll('p')
for p in results:
    print(p, p.text)

输出:

<p>bla1 bla1 bla1</p> bla1 bla1 bla1
<p>bla2 bla2 bla2</p> bla2 bla2 bla2
<p>bla3 bla3 bla3</p> bla3 bla3 bla3

因此,要获得元素的原始文本以及标题,您需要的是什么。记住,find all会给你一个列表,find会给你它所属的第一个元素。你知道吗

编辑:修复了一些复制粘贴错误。你知道吗

相关问题 更多 >

    热门问题