在SPAN中刮取文本

2024-09-29 17:19:51 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从下面的<span class="arabic_sanad arabic">&;<span class="arabic_text_details arabic">中提取文本

<div class="arabic_hadith_full arabic"><span class="arabic_sanad arabic">حَدَّثَنَا أَبُو الْيَمَانِ، قَالَ أَخْبَرَنَا شُعَيْبٌ، قَالَ حَدَّثَنَا أَبُو الزِّنَادِ، عَنِ الأَعْرَجِ، عَنْ أَبِي هُرَيْرَةَ ـ رضى الله عنه ـ أَنَّ رَسُولَ اللَّهِ صلى الله عليه وسلم قَالَ ‏</span>
<span class="arabic_text_details arabic">"‏ فَوَالَّذِي نَفْسِي بِيَدِهِ لاَ يُؤْمِنُ أَحَدُكُمْ حَتَّى أَكُونَ أَحَبَّ إِلَيْهِ مِنْ وَالِدِهِ وَوَلَدِهِ ‏"</span><span class="arabic_sanad arabic">‏‏.‏</span></div>

我试过以下方法,但由于以下错误,我失败了

^{pr2}$

代码:

url = "http://www.sunnah.com/bukhari/8"

parser = etree.HTMLParser()
html   = etree.parse(url, parser)
result = etree.tostring(html.getroot(), pretty_print=True, method="html")
soup = BeautifulSoup(result) 

results = soup.findAll("div", {"class" : "actualHadithContainer"})
for result in results :
  ar = result.find("div", {"class" : "arabic_hadith_full arabic"})
  name2 = ar.get_text()
  print name2

Tags: textdivparserurlhtmlresultdetailsfull
2条回答

在打印之前,请尝试将字符串转换为unicode:

ar = result.find("div", {"class" : "arabic_hadith_full arabic"}, text=True) #only finds those with text inside
name2 = unicode(ar.get_text(), encoding='utf-8')
print name2

您必须按照前面的指示将字符串转换为unicode。在

 'ResultSet' object has no attribute 'get_text' 

为了防止这个错误,您必须检查ar是否有get_text方法。 在旧代码中,第一个节点有文本, 你的错误是因为错误的编码。 当你修复程序时,for循环继续,你得到一个没有文本的节点, 因此,get_text方法此时不存在。 这样的方法应该有效:

^{pr2}$

相关问题 更多 >

    热门问题