如何获得相同数据不同的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'}]
如何到达文本 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'}]