List 提取Beautiful Soup中的标记内容超出范围和最大递归错误

List 提取Beautiful Soup中的标记内容超出范围和最大递归错误,list,recursion,web-scraping,beautifulsoup,List,Recursion,Web Scraping,Beautifulsoup,我正在努力学习如何用漂亮的汤刮东西。我的尝试是从阿里巴巴网站上获取公司名称 我的理解是标记的内容像列表一样管理,您可以再次使用find_all来提取子元素。例如: bar = soup.find_all("some", {"class" : "mainstuff"}) for foo in bar: print foo.contents[1].find_all("a", {"class" : "otherstuff"}) 我的问题是,我似乎无法为标签的内容编制索引,以便只提取名称 当我

我正在努力学习如何用漂亮的汤刮东西。我的尝试是从阿里巴巴网站上获取公司名称

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

bar = soup.find_all("some", {"class" : "mainstuff"})
for foo in bar:
    print foo.contents[1].find_all("a", {"class" : "otherstuff"})
我的问题是,我似乎无法为标签的内容编制索引,以便只提取名称

当我尝试时,我得到[0]的最大递归深度超出错误和[1]的索引超出范围错误

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
给予

北京天马吊索有限公司

联系方式

联系供应商

print name.contents
联系方式 联系供应商

print name.contents
秦皇岛艾迪特高科技陶瓷有限公司

联系方式

联系供应商

print name.contents
联系方式 联系供应商

print name.contents
给予

[<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>]
我得到运行时错误:超过最大递归深度

print name.contents[1]
提供索引器:列表索引超出范围


这种技术似乎在其他页面(www.yellowpages.com)上也适用,所以我现在不明白为什么会出现错误

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

for name in supplier:
    if name.text and len(name.contents) == 1:
        print name.text