【发布时间】:2019-04-17 21:49:49
【问题描述】:
我是BeautifulSoup 的新手。我试图用requests 解析一个HTML 网页。我现在写的代码是:
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%;"> 开头。在每个块中,我应该找到具有itemprop="url" 的标签a 并获得NAME。然后在<span class="Gray">In English:</span> 中获取en_name 并在itemprop="description" 中获取description。但我觉得BeautifulSoup 做不到(或者至少很难做到)。如何解决?
【问题讨论】:
标签: python web-scraping beautifulsoup