Как спарсить каждый отдельный элемент div?
Html код:
<div>
<time datetime="2022-12-17T07:47:52+03:00">сегодня в 07:47</time>
|
<a href="/news/pc">ПК</a>,
<a href="/news/rumors">Слухи</a>,
<a href="/news/freebies">Раздачи и скидки</a>
</div>
У дочерних элементов нету ни id ни class, при этом нужно достать содержимое из каждого.
Python код:
import requests
from bs4 import BeautifulSoup
headers = {
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
}
def get_free_game():
url = "юрл страницы"
r = requests.get(url=url, headers=headers)
soup = BeautifulSoup(r.text, "lxml")
list_items = soup.find_all("div", class_="post")
games_dict = {}
for items in list_items:
game_title = f"{items.find('div', class_='post-title').text.strip()}"
news_tag = f"{items.find('div', class_='post-metadata').text.strip()}".split("\n")
games_dict = {
"News": game_title,
"Tags": news_tag,
}
print(games_dict)
if __name__ == "__main__":
get_free_game()
Ответы (1 шт):
Автор решения: Сергей Ш
→ Ссылка
from bs4 import BeautifulSoup
txt = '<div class="post-content">' \
'<div class="post-metadata">' \
'<div>' \
'<time datetime="2022-12-17T07:47:52+03:00">сегодня в 07:47</time>' \
'<a href="/news/pc">ПК</a>,' \
'<a href="/news/rumors">Слухи</a>,' \
'<a href="/news/freebies">Раздачи и скидки</a>' \
'</div>' \
'</div>' \
'</div>'
soup = BeautifulSoup(txt, "lxml")
items = soup.find('div', class_='post-metadata')
# 1
data, *news_tag = [x for x in items.stripped_strings if x != ',']
print(data)
print(news_tag)
# 2
data = items.find('time').text # data = items.time.text
news_tag = [x.text for x in items.find_all('a')]
print(data)
print(news_tag)
# 3
news_tag = {x.text: x['href'] for x in items.find_all('a')}
print(news_tag)