如何提取特定的段落标记

时间:2014-03-25 08:38:56

标签: python html beautifulsoup

我想提取此回复的内容:

<div class="bio-container">
   <p class="bio profile" >
       Chinedu is a good boy
   </p>
</div>

请假设还有其他paragrpah标签具有不同的类属性,但我想用class属性“bio-profile”提取这个标签

我只想提取Chinedu是个好文章。

我尝试了desc = bs.find ('p', {'class' : 'bio profile'})

但没有工作

这是我的确切代码,我试图将上述答案应用于:

import urllib
from bs4 import BeautifulSoup as bsoup
import string


httpResponse = urllib.urlopen("https://twitter.com/drericcole")
html = httpResponse.read()
bs = bsoup(html)
desc = bs.find("p", class_="bio profile-field")
print desc.get_text().strip()

但我得到一个错误陈述

print desc.get_text().strip()
AttributeError: 'NoneType' object has no attribute 'get_text'

3 个答案:

答案 0 :(得分:1)

您应该在.get_text()上使用desc方法。使用Python 2.7和BS 4.3.2:

from bs4 import BeautifulSoup as bsoup

ofile = open("test.html")
soup = bsoup(ofile)

desc = soup.find("p", class_="bio profile")
# or desc = soup.find("p", {"class":"bio profile"})
print desc.get_text().strip()

结果:

Chinedu is a good boy
[Finished in 0.2s]

希望这有帮助。

答案 1 :(得分:0)

使用BeautifulSoup模块从<p>标签中提取所有文本。

script.py的内容:

from bs4 import BeautifulSoup
import sys 

soup = BeautifulSoup(open(sys.argv[1], 'r'), 'html')

    print(' '.join(map(lambda e: e.string, soup.find_all('p'))))

像以下一样运行:

python3 script.py infile

答案 2 :(得分:0)

试试这个

from BeautifulSoup import BeautifulSoup as bs
soup = bs(<Your html>)
soup.p.text