BeautifulSoup:获取另一个标签下的 div 文本

时间:2021-05-17 15:28:34

标签: beautifulsoup

我正在查看下面的 html,我正在努力获得“Sondaż CBOS:KO z najgorszym wynikiem w historii”文本和“https://www.rp.pl/Polityka/210519462-Sondaz-CBOS -Koalicja-Obywatelska-z-najgorszym-wynikiem-w-historii.html”链接在下面的 html 中。

<div class="col-md-4 col-sm-6 col-xs-12 news-block teaser-parent -visible -seen" data-dateid="2021-05-17">
   <div class="mk-small__wrapper" style="display: none;">
      <div class="ccesection">
         <div class="cce-object">
            <div class="hidden" data-info="No suitable cce objects form marketing component (cceclass: section_page, ccetype: promoblock_01)"></div>
         </div>
      </div>
   </div>
   <article class="teaser teaser--photo-top ">
      <a href="https://www.rp.pl/Polityka/210519462-Sondaz-CBOS-Koalicja-Obywatelska-z-najgorszym-wynikiem-w-historii.html"><img class="teaser__image" src="/apps/pbcsi.dll/storyimage/RP/20210517/KRAJ/210519462/AR/0/0/AR-210519462.jpg?MaxW=370&amp;imageversion=Artykul&amp;lastModified=20210517160855"></a>
      <h4 class="teaser__index"><a href="/kraj/polityka">Polityka</a></h4>
      <a href="https://www.rp.pl/Polityka/210519462-Sondaz-CBOS-Koalicja-Obywatelska-z-najgorszym-wynikiem-w-historii.html">
         <div class="teaser__title">Sondaż CBOS: KO z najgorszym wynikiem w historii</div>
      </a>
      <div class="teaser__footer"> <time datetime="2021-05-17T16:08:55-03:00">17.05.2021, 16:08</time> , <a href="https://www.rp.pl/autor/1/1-mikulski">1 Mikulski</a></div>
      <div class="teaser__icon"></div>
   </article>
</div>

这是我要运行的代码:

from bs4 import BeautifulSoup
import requests
from datetime import date, time, datetime, timedelta

url='https://www.rp.pl/kraj'
response=requests.get(url)

soup=BeautifulSoup(response.content,'lxml')

for item in soup.select('.col-md-4'):
    headline = item.find('div', {'class':'teaser__title'}).get_text()
    link = item.find('a')['href']

我收到了 NoneType 错误,就像它没有找到我为“标题”变量寻找的元素,并获得了一些我不想在“链接”变量中引用的其他链接。我显然在 html 中引用了错误的项目。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

class="teaser__title" 实际上在 <h3> 标签下,而不是 <div>。此外,我会去获取所有 <article> 标签,而不是 '.col-md-4' 类,因为您再次获得 None。

from bs4 import BeautifulSoup
import requests
from datetime import date, time, datetime, timedelta

url='https://www.rp.pl/kraj'
response=requests.get(url)

soup=BeautifulSoup(response.content,'lxml')

items = soup.select('article')
for item in items:
    headline = item.select_one('.teaser__title').get_text()
    link = item.select_one('.teaser__title').find_previous('a')['href']
    print('%s\n%s\n\n' %(headline, link))

输出:

Poseł Porozumienia: „Nowy Ład” to program groźny dla Polski
https://www.rp.pl/Polityka/210519486-Posel-Porozumienia-Nowy-Lad-to-program-grozny-dla-Polski.html


Sondaż CBOS: KO z najgorszym wynikiem w historii
https://www.rp.pl/Polityka/210519462-Sondaz-CBOS-Koalicja-Obywatelska-z-najgorszym-wynikiem-w-historii.html


„Lewica i PO kłócą się o Polski Ład. A Kaczyński zaciera ręce”
https://podcasty.rp.pl/rzecz-w-tym/13393-lewica-i-po-kloca-sie-o-polski-lad-a-kaczynski-zaciera-rece?utm_source=rp&utm_medium=teaser_redirect


Budka: Thun powołuje się na racje z zamierzchłej przeszłości
https://www.rp.pl/Platforma-Obywatelska/210519454-Budka-o-Thun-Powoluje-sie-na-jakies-racje-z-zamierzchlej-przeszlosci.html


Cenna klacz nie wróciła do Janowa. „Słuch o niej zaginął”
https://www.rp.pl/Spoleczenstwo/305169953-Cenna-klacz-arabska-niczym-znikajacy-punkt.html


Braun: Nie będzie segregacji sanitarnej w Rzeszowie
https://www.rp.pl/Polityka/210519459-Braun-Nie-bedzie-segregacji-sanitarnej-w-Rzeszowie.html


Raś: Polski Ład to program PiS na wcześniejsze wybory...
https://www.rp.pl/RZECZoPOLITYCE/210519460-Ireneusz-Ras-Polski-Lad-to-program-PiS-na-wczesniejsze-wybory-parlamentarne.html