Python 刮除跨距内的文本,取消选择“美化”组

Python 刮除跨距内的文本,取消选择“美化”组,python,beautifulsoup,Python,Beautifulsoup,如何从下面的&中提取文本 <div class="arabic_hadith_full arabic"><span class="arabic_sanad 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>
代码:

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

请尝试将字符串转换为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
方法。 像这样的方法应该会奏效:

for result in results :
  ar = result.find("div", {"class" : "arabic_hadith_full arabic"})

  if not getattr(ar, get_text):
      continue

  name2 = ar.get_text()

  print u"{}".format(name2)

尝试使用
打印u“{}”.format(name2)
。更多信息:我得到name2=ar.get_-text()AttributeError:“ResultSet”对象没有属性“get_-text”我得到以下错误name2=unicode(ar.get_-text(),encoding='utf-8')AttributeError:“ResultSet”对象没有属性“get_-text”是否包含
已完成更新。请检查它。thx,但相同的错误名称2=unicode(ar.get_text(),encoding='utf-8')AttributeError:'NoneType'对象没有属性'get_text',对不起,我忘了一些东西。请稍等,我现在要做伊莎祈祷:)仍然不起作用,我想我的问题是DIV里面有一个,因此它无法得到文本!!大概
for result in results :
  ar = result.find("div", {"class" : "arabic_hadith_full arabic"})

  if not getattr(ar, get_text):
      continue

  name2 = ar.get_text()

  print u"{}".format(name2)