Я новичок в BeautifulSoup
. Я пытался разобрать веб-страницу HTML с requests
. Код, который я написал на данный момент:
import requests
from bs4 import BeautifulSoup
link = "SOME_URL"
f = requests.get(link)
soup = BeautifulSoup(f.text, 'html.parser')
for el in (soup.findAll("td",{"class": "g-res-tab-cell"})):
print(el)
exit
Вывод выглядит следующим образом:
<td class="g-res-tab-cell">
<div style="padding:8px;">
<div style="padding-top:8px;">
<table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
<tr>
<td valign="top">
<div itemscope itemtype="URL">
<table cellspacing="0" cellpadding="0" style="width:100%;">
<tr>
<td valign="top" class="g-res-tab-cell" style="width:100%;">
<div style="width:100%;padding-left:4px;">
<div class="subtext_view_med" itemprop="name">
<a href="NAME1-URL" itemprop="url">NAME1</a>
</div>
<div style="direction:ltr;padding-left:5px;margin-bottom:2px;" class="smtext">
<span class="Gray">In English:</span> ENGLISH_NAME1
</div>
<div style="padding-bottom:2px;padding-top:8px;font-size:14px;text-align:justify;min-height:158px;" itemprop="description">DESCRIPTION1</div>
</div>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
<tr>
<td valign="top">
<div itemscope itemtype="URL">
<table cellspacing="0" cellpadding="0" style="width:100%;">
<tr>
<td valign="top" class="g-res-tab-cell" style="width:100%;">
<div style="width:100%;padding-left:4px;">
<div class="subtext_view_med" itemprop="name">
<a href="NAME2-URL" itemprop="url">NAME2</a>
</div>
<div style="direction:ltr;padding-left:5px;margin-bottom:2px;" class="smtext">
<span class="Gray">In English:</span> ENGLISH_NAME2
</div>
</div>
<div style="padding-bottom:2px;padding-top:8px;font-size:14px;text-align:justify;min-height:158px;" itemprop="description">DESCRIPTION2</div>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</div>
</td>
Теперь я застрял. Я пытаюсь разобрать NAME
, DESCRIPTION
и ENGLISH_NAME
для каждого блока. Я хотел бы напечатать каждый из них, чтобы вывод был:
name = NAME1
en_name = ENGLISH_NAME1
description = DESCRIPTION1
name = NAME2
en_name = ENGLISH_NAME2
description = DESCRIPTION2
Я пытался читать документы, но не мог найти, как обращаться с вложенными атрибутами, особенно без class
или id
имени. Как я понимаю, каждый блок начинается с <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
. В каждом блоке я должен найти тег a
, который имеет itemprop="url"
и получить NAME
. Затем в <span class="Gray">In English:</span>
получите en_name
и в itemprop="description"
получите description
. Но я чувствую, что BeautifulSoup
не может этого сделать (или, по крайней мере, очень трудно добиться этого). Как это решить?