如何获得相同数据不同的div

How Can I get the same data different divs

如何到达文本 div?这是一个 divs 的网站,我想从不同的 divs 获取数据。 col... divs 中还有 article2 divs。 我需要每个文本数据。但是我的代码不起作用,因为我不知道如何同时到达不同的 divs(col_6...,col_3...div s).

我的代码:

article_title = div.find('div', attrs={'class':'article2'}).find('div', attrs={'class':'text'}).find('h1')

站点代码:

<div class="row">
        <div class="col_6 ct_12 cd_12 cm_12">
            <a href="https://kronikaonline.ro/erdelyi-hirek/uralkodasanak-helyszinen-a-gyulafehervari-varban-allitanak-emleket-bethlen-gabor-erdelyi-fejedelemnek">
            <div class="article2" style="padding-top:0px;">
               <div class="text">
               <h1>TITLE</h1>
               </div>
            </div>
            </a>
        </div>
        <div class="col_3 ct_12 cd_12 cm_12">
        </div>
   </div>

使用 find_all 而不是查找来达到所有 div

div.find_all("div")

它将 return 一个包含所有匹配项的列表。

https://beautiful-soup-4.readthedocs.io/en/latest/index.html?highlight=find_all#find-all

您是否尝试获取每篇文章的每个 h1 元素的文本?

# Find all the h1 in the soup object
all_h1_title = div.find_all('h1')

# print each h1 text
for each_h1 in all_h1:
    print(each_h1.text)

关于 find_all() 的更多信息:https://www.crummy.com/software/BeautifulSoup/bs4/doc/#:~:text=tree%2C%20such%20as-,find_all(),-%3A

您可以使用 find_all()css selectors 来 select 您的所有文章并迭代 ResultSet 以获取您想要抓取的所有信息:

for a in soup.select('div.article2'):
    print(f"title: {a.h1.text}")
    print(f"url: {a.find_previous('a').get('href')}")

例子

提取数据并存储在字典列表中:

from bs4 import BeautifulSoup
html = '''
<div class="row">
        <div class="col_6 ct_12 cd_12 cm_12">
            <a href="url1">
            <div class="article2" style="padding-top:0px;">
               <div class="text">
               <h1>TITLE1</h1>
               </div>
            </div>
            </a>
        </div>
        <div class="col_6 ct_12 cd_12 cm_12">
            <a href="url2">
            <div class="article2" style="padding-top:0px;">
               <div class="text">
               <h1>TITLE2</h1>
               </div>
            </div>
            </a>
        </div>
   </div>
'''
soup = BeautifulSoup(html)

data = []

for a in soup.select('div.article2'):
    data.append({
        'title': a.h1.text,
        'url': a.find_previous('a').get('href')
    })

print(data)
输出
[{'title': 'TITLE1', 'url': 'url1'}, {'title': 'TITLE2', 'url': 'url2'}]