我正试着学习如何用美丽的汤擦拭。我的试验是从Alibaba.com那里获取公司名称。
我的理解是标签的内容是像列表一样管理的,您可以再次使用find_all提取子元素。例如:
bar = soup.find_all("some", {"class" : "mainstuff"})
for foo in bar:
print foo.contents[1].find_all("a", {"class" : "otherstuff"})我的问题是,我似乎不能索引我的标签的内容,以便只提取名称。
当我尝试时,我得到一个最大递归深度超过误差和索引超出范围误差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给出
[<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[0]我得到RuntimeError:最大递归深度超过
print name.contents[1]给出超出范围的IndexError:列表索引
这项技术似乎适用于其他页面(www.yellowpages.com),因此我不知道为什么现在会出现错误。
发布于 2014-10-11 13:46:18
我发现,如果a标记有公司名称,那么name.contents返回一个长度为1的数组。所以你可以试试这个方法。
for name in supplier:
if name.text and len(name.contents) == 1:
print name.texthttps://stackoverflow.com/questions/26309584
复制相似问题