【发布时间】:2017-05-27 09:01:18
【问题描述】:
我刚开始学习python和bs4。我正在尝试解析一个看起来像这样的 html 页面:
....
<p class="result-info">
<span class="result-meta">
<span class="result-price">$1895</span>
<span class="result-hood"> address1 </span>
</span>
....
我的python代码如下:
soup = BeautifulSoup(allResponse.content)
resultInfoTags = soup.find_all("p", class_="result-info")
infoList = []
for infoTag in resultInfoTags:
infoDS = {}
infoDS['detail_link'] = infoTag.find("a")['href']
for metaData in infoTag.find_all("span", class_="result-meta"):
firstSpan = metaData.find("span");
infoDS['price'] = firstSpan.string
lala = metaData.find("span", class_="result-hood")
infoDS['area'] = lala.string
infoList.append(infoDS)
错误发生在infoDS['area'] = lala.string 行。它抱怨
AttributeError: 'NoneType' object has no attribute 'string'
但是当我打印 type(lala) 时,它显示 lala 是<class 'bs4.element.Tag'>。当我打印 lala 本身时,它会显示整个标签文本
<span class="result-hood"> (address1)</span>
我很困惑,因为我使用相同的想法来获取 firstSpan 并且输出正确的字符串 $1895 没有任何问题。但这对拉拉不起作用……我花了几个小时在网上拼命调查和搜索,但没有发现任何有用的东西……
任何建议或提示将不胜感激!
【问题讨论】:
-
请贴出所有html代码
标签: beautifulsoup web-crawler html-parsing