从BeautifulSoup resultSet中提取<li>标记

时间:2017-04-03 09:05:12

标签: python web-scraping beautifulsoup

我想从html页面中提取所有<li>标签。可以使用result = soup.find('div', {'class':'column column_620 column_content'})检索所需的内容。这将返回第一个类column_620。之后,我得到它的兄弟姐妹,并想要提取<li>标签。但result没有方法findAll()。 我该怎么做才能提取所需的<li>标签条目?

import re
import time
from datetime import datetime
import platform
import pandas as pd
from numpy import nan
from itertools import chain

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

timestampStart = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

sdCel = 'http://www.linguista.ch/sprachschule/san-diego-cel/'

#browser = webdriver.PhantomJS() # headless
browser = webdriver.Chrome() # run it with chrome browser appearing
browser.get(sdCel)    
sellingPoints = soup.find('div', {'class':'column column_620 column_content'})
points_ul = sellingPoints.find_next_siblings()
#points_ul = sellingPoints.parent.find_next_sibling()

for item in points_ul.findAll('li'): #this gives error
    if isinstance(item, Tag):
        print item.text

这会出现以下错误: AttributeError: 'ResultSet' object has no attribute 'findAll'

这是我必须检索的points_ul的一部分:

<div class="column column_620 column_content">\n <h3>Weshalb wir College of English Language f\xfcr einen Sprachaufenthalt empfehlen:</h3>\n <p></p><ul><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> </ul><p></p>\n</div>

1 个答案:

答案 0 :(得分:2)

这是因为sellingPoints.find_next_siblings()正在为您返回一个列表,并且列表中没有findAll方法。

首先迭代列表,然后在其元素中使用findAll