import re
import time
from datetime import datetime
import platform
import pandas as pd
from numpy import nan
from itertools import chain
sdCel = 'http://www.linguista.ch/sprachschule/san-diego-cel/'
browser = webdriver.Chrome() # run it with chrome browser appearing
browser.get(sdCel)
soup = BeautifulSoup(browser.page_source, "html.parser")
sellingPoints = soup.find('div', {'class':'column column_620 column_content'})
points_ul = sellingPoints.find_next_siblings()
list = []
for item in points_ul:
print item.findAll('li') # .get('li') does not work: AttributeError: 'ResultSet' object has no attribute 'get'
list.append(item)
for newItem in list:
print newItem.findAll('li')
这是结果
[<li class="calculate"><a class="f16" href="nc/kostenlose- beratung/sprachschule/San%2520Diego%2520Sprachschule%2520College%2520of%2 520English%2520Language/" title="College of English Language: kostenlose Beratung"><img alt="" border="0" src="fileadmin/img/icon_consultation.png"/> Kostenlose Beratung</a></li>, <li class="calculate"><a class="f16" href="nc/sprachaufenthalt-preis-berechnen/sprachschule/san-diego-cel/" title="College of English Language: jetzt online buchen"><img alt="" border="0" src="fileadmin/img/icon_booking.png"/> Jetzt buchen</a></li>]
[]
[<li>Beste Lage im Stadtzentrum von San Diego</li>, <li>Sprachschule mit famil\xe4rer Atmosph\xe4re</li>, <li>Von der Terrasse aus geniessen Sie einen tollen Blick \xfcber die Stadt</li>, <li>Kleine Klasen mit max. 10 Teilnehmern</li>, <li>Hervorragendes Preis- / Leistungsverh\xe4ltnis</li>]
[]
[]
[]
[]
[<li>Schlendern durchs Gaslamp Quarter der Old Town </li>, <li>Besuch des weltber\xfchmten San Diego Zoos </li>, <li>Relaxen und grillen am Strand </li>, <li>Ausflug Disneyland oder zu den Universal Studios </li>, <li>Rollerbladen entlang der Strandpromenade </li>]
[]
[]
我尝试通过创建名为list
的新列表并从那里获取li
标记来解决此嵌套列表。我也尝试调用.get(),但这也不起作用。
如何在忽略空对象的同时获取原始文本的文本某些特定li
标签?
答案 0 :(得分:2)
您可以使用lambdas
来搜索包含子项或文字的li,以避免获得空结果。
以下是一个例子:
example = """<li></li><li class="calculate"><a class="f16" href="nc/kostenlose-beratung/sprachschule/San%2520Diego%2520Sprachschule%2520College%2520of%2520English%2520Language/" title="College of English Language: kostenloseBeratung"><img alt="" border="0" src="fileadmin/img/icon_consultation.png"/>Kostenlose Beratung</a></li>, <li class="calculate"><a class="f16"href="nc/sprachaufenthalt-preis-berechnen/sprachschule/san-diego-cel/"title="College of English Language: jetzt online buchen"><img alt=""border="0" src="fileadmin/img/icon_booking.png"/> Jetzt buchen</a></li>"""
soup = BeautifulSoup(example, 'lxml')
for li in soup.find_all(lambda tag: tag.name == "li" and (len(tag.findChildren()) > 0 or len(tag.text) > 0)):
print (li.get_text(strip=True))
将打印:
Kostenlose Beratung
Jetzt buchen