我已经设置了以下函数来使用BeautifulSoup从页面中提取数据。哪个工作正常,除了在某些情况下,span
标签(带有一个类元素)在我传递给函数的next_tag
属性下面,所以当我调用{{ 1}}我在树下没有达到我需要的真实内容。
这是我正在抓的页面,失败的元素开始“感兴趣的表达”。
我尝试过.string而不是内容[0],但它似乎不适用于contents[0]
。
findNext
答案 0 :(得分:0)
我想出了一个令人震惊的黑客来让它工作,任何关于如何以更有效的方式工作树的建议将非常感激。我添加了另一个处理此数据类型的函数,并添加了if
语句来处理len()
超过1的标记。我用两个潜在标记调用该函数,并过滤根据标记的len计数向下命令,如下所示:
def get_estimates (tender_soup, tag, text, next_tag, alt_tag):
if tender_soup.find(tag,text=text) == None:
item_name = ''
return item_name
else:
if len(tender_soup.find(tag,text=text).findNext(next_tag).contents) == 0:
item_name = ''
return item_name
else:
if len(tender_soup.find(tag,text=text).findNext(next_tag)) > 1:
item_name = tender_soup.find(tag,text=text).findNext(alt_tag).contents[0]
else:
item_name = tender_soup.find(tag,text=text).findNext(next_tag).contents[0]
item_name = item_name.encode('utf-8')
item_name = item_name.strip()
return item_name
return item_name