Python Beautiful Soup抓取文本数据

时间:2013-06-18 00:06:44

标签: python beautifulsoup

我是python的新手,我正在尝试使用Python中的beautifulSoup从网站抓取一些文本评论。部分html结构如下,

<div style="1st level">
    <div style="2nd level">Here is text 1</div>
    <div style="2nd level">Here is text 2</div>
    <div style="2nd level">Here is text 3</div>
    <div style="2nd level">Here is text 4</div>
    Here is text 5 and this is the part I want to get.
<div>

因此,文本1,2,3,4处于第二级,我不需要这些文本。我只想获得结构第一层的文本5。我的部分代码如下:

reviews=soup.find('div',style="1st level")
reviews=reviews.text
print reviews

但是后来我从文本1到文本5得到了所有内容。是否有一种简单的方法可以找到第一级并且只获得文本5?

1 个答案:

答案 0 :(得分:0)

不确定这些方法是最好的,但试试看:

from bs4 import BeautifulSoup as soup
from collections import deque


input = """<div style="1st level">
    <div style="2nd level">Here is text 1</div>
    <div style="2nd level">Here is text 2</div>
    <div style="2nd level">Here is text 3</div>
    <div style="2nd level">Here is text 4</div>
    Here is text 5 and this is the part I want to get.
<div>"""

web_soup = soup(input)
reviews = web_soup.find('div', style="1st level")

print reviews.contents[-2]
print deque(reviews.strings, maxlen=1).pop()

两个版画:

Here is text 5 and this is the part I want to get.

仅供参考,我使用deque来获取strings生成器中的最后一个元素。

并且,使用text(),FYI,lxml + xpath可以更轻松地完成工作。

希望有所帮助。