我想提取此回复的内容:
<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'
答案 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