首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从范围和最大递归误差范围内提取美女汤中的标签内容

从范围和最大递归误差范围内提取美女汤中的标签内容
EN

Stack Overflow用户
提问于 2014-10-10 23:48:58
回答 1查看 74关注 0票数 1

我正试着学习如何用美丽的汤擦拭。我的试验是从Alibaba.com那里获取公司名称。

我的理解是标签的内容是像列表一样管理的,您可以再次使用find_all提取子元素。例如:

代码语言:javascript
复制
bar = soup.find_all("some", {"class" : "mainstuff"})
for foo in bar:
    print foo.contents[1].find_all("a", {"class" : "otherstuff"})

我的问题是,我似乎不能索引我的标签的内容,以便只提取名称。

当我尝试时,我得到一个最大递归深度超过误差和索引超出范围误差1。

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup

r = requests.get("http://www.alibaba.com/products/isostatic_press.html")

soup = BeautifulSoup(r.content)

supplier = soup.find_all("a", {"class" : "dot-product"}) #Location of company name

for name in supplier:
    print name.text

给出

北京天马吊具有限公司。

联系人详细信息

接触供应商

联系方式与供应商联系

秦皇岛艾迪高科技陶瓷有限公司。

联系人详细信息

接触供应商

联系方式与供应商联系

代码语言:javascript
复制
print name.contents

给出

代码语言:javascript
复制
[<span class="gs1"></span>]
[u'Beijing Tianma Sling Co., Ltd.']
[]
[u'Contact Details', <i></i>]
[<i></i>]
[<span class="ico-email"></span>, u'Contact Supplier']
[]
[u'Contact Details', <i></i>]
[<span class="ico-csb"></span>, u'Contact Supplier']
[]
[<span class="gs3"></span>]
[u'Qinhuangdao Aidite High-Technical Ceramics Co., Ltd.']
[]
[u'Contact Details', <i></i>]

我只想知道公司的名字,但当我试着

代码语言:javascript
复制
print name.contents[0]

我得到RuntimeError:最大递归深度超过

代码语言:javascript
复制
print name.contents[1]

给出超出范围的IndexError:列表索引

这项技术似乎适用于其他页面(www.yellowpages.com),因此我不知道为什么现在会出现错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-11 13:46:18

我发现,如果a标记有公司名称,那么name.contents返回一个长度为1的数组。所以你可以试试这个方法。

代码语言:javascript
复制
for name in supplier:
    if name.text and len(name.contents) == 1:
        print name.text
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26309584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档