Beautifulsoup获取特定儿童的内容

时间:2014-12-01 09:34:31

标签: python beautifulsoup web-crawler selector children

我目前正在使用Beautifulsoup进行爬虫。我想获得无序列表中特定孩子的数据。

所以网页基本上是这样的:

<div class= product-list-item--usp-list>

    <ul class="unordered-list"> 
        <li>a</li> 
        <li>b</li> 
        <li>c</li> 
    </ul> 

我目前只收到第0个孩子(a)的内容。我只想得到第一个孩子(b&amp; c)的第一个内容。 我的代码是这样的:

    a = item.find("ul", class_="unordered-list").li
    b = item.find("ul", class_="unordered-list").li

所以我试过这个:         a = item.find(&#34; ul&#34;,class _ =&#34; unordered-list&#34;)。li [1]         b = item.find(&#34; ul&#34;,class _ =&#34; unordered-list&#34;)。li [2]

这是我的错误:

   a = item.find("ul", class_="unordered-list").li[1]
  File "/usr/local/lib/python2.7/dist-packages/bs4/element.py", line 905, in __getitem__
    return self.attrs[key]
KeyError: 1
[Finished in 2.9s with exit code 1]

我的问题是:我如何收到child[1]child[2]的内容? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

你可以这样做。

>>> from bs4 import BeautifulSoup
>>> s = """<div class= product-list-item--usp-list>

    <ul class="unordered-list"> 
        <li>a</li> 
        <li>b</li> 
        <li>c</li> 
    </ul> """
>>> soup = BeautifulSoup(s)
>>> foo = soup.find("ul", class_="unordered-list")
>>> [i.text for i in foo.find_all('li')[1:]]
['b', 'c']