2015-06-19 4 views
2

Я хочу получить текст из тега с помощью красивого мыла, я пробую код на своем компьютере (работает Mac OSX Yosemite), и он работает правильно, но когда я запускаю этот код на сервере Linux (работает Ubuntu 10.4) Я получаю эту ошибку:получить текст от beautifulsoap без использования str.text.strip()

mtemp = div_tag.text.strip()

AttributeError: 'NoneType' object has no attribute 'text'

И код это:

div_tag = soup.find('div', class_='span12 path_item') 

    mtemp = div_tag.text.strip() 
    print mtemp 

Мне нужно получить текст из этого тега, но я не знаю, почему код не запускается на сервере, и мне нужно найти способ получить чистый текст из тега, используя div_tag.text.strip() Если это поможет вы можете увидеть содержание div_tag (текст/То, что я хочу получить от HTML кода) и div_tag его самостоятельно здесь:

صفحه اصلی مکانها گردشگری میراث فرهنگی کاخ موزه گلستان
<div class="span12 path_item"> 
     <a href="/" style="margin-right: 5px;"><i class="fa fa-arrow-left"></i> صفحه اصلی</a> 

     <a href="/list/show-places" id="PlaceHolderDivMainContent_MainContent_MainContent_hamgardiSiteView_NavigationBar_ASites" style="cursor:pointer"><i class="fa fa-angle-left"></i>مکان‌ها</a> 

     <a href="/list/show-places/Category-Tourism" id="PlaceHolderDivMainContent_MainContent_MainContent_hamgardiSiteView_NavigationBar_ACategory" style="cursor:pointer"><i class="fa fa-angle-left"></i>گردشگری</a> 
     <a href="/list/show-places/Category-Tourism/SubCategory-59" id="PlaceHolderDivMainContent_MainContent_MainContent_hamgardiSiteView_NavigationBar_ASubCategory" style="cursor:pointer"><i class="fa fa-angle-left"></i>میراث فرهنگی</a> 
     <a id="PlaceHolderDivMainContent_MainContent_MainContent_hamgardiSiteView_NavigationBar_Title"><i class="fa fa-angle-left"></i>کاخ موزه گلستان</a> 

    </div> 
+1

Имена классов не могут иметь места. – Rishav

+0

http://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-by-css-class – Rishav

+0

@xrisk Я не очень много знаю о HTML, но я точно копирую код с сайта (через элемент проверки), и я получаю текст, используя этот класс на своем компьютере. – Mehdi

ответ

3

Во-первых, ваш селектор не будет соответствовать правильно с class_ атрибута вы указали, так как два класса, назначенные для div.

Чтобы сделать MatchSearch более чем одним классом, вам нужно использовать селектор CSS.

Этот код будет работать, но я не очень нравится, и я его улучшить, если что-то приходит на ум:

from bs4 import BeautifulSoup as bs 
#s = your html 
soup = bs(s) 
d = soup.select('div.span12.path_item') 
e = bs(str(d[0])) 
for x in e.find_all('a'): 
    print x.text.strip() 
+0

благодарю за ваш ответ xrisk, но моя проблема заключается в получении текста из этого тега div, с моим кодом, тегом div был выбран, но я не могу удалить текст. – Mehdi

+0

@Mehdi, что именно вы подразумеваете под «текстом»? – Rishav

+0

Проверьте мой отредактированный вопрос! – Mehdi