2014-12-02 1 views
0

Я использовал bs4 для создания веб-скрепок. У меня не было проблем с получением желаемых строк в тегах, но похоже, что есть одна строка, в которой нет связанных тэгов (может быть, я ошибался).Веб-скребок с использованием bs4. Что делать, если в строке нет тега, связанного с

Так формат HTML выглядит следующим образом:

<li class='A'> 
    <span class='B'> Some_string_here </span> 
    " MY DESIRED STRING " 
    <div class='C'> Some_string_here </div> 
</li> 

Я знаю, как получить «некоторую строку здесь», но я понятия не имею, как получить «МОЕ ЖЕЛАНИЕ STRING»

Спасибо большое заранее!!

+0

Не могли бы вы опубликовать пример раздел HTML? –

+1

О, конечно! Это мой первый вопрос, задающий вопросы здесь, и я уверен, что я написал пример html, но почему-то это не было опубликовано. – Jason

ответ

1

Существуют различные способы, чтобы сделать это:

>>> s = """ 
... <li class='A'> 
... <span class='B'> Some_string_here </span> 
... " MY DESIRED STRING " 
... <div class='C'> Some_string_here </div> 
... </li> 
... """ 
>>> from bs4 import BeautifulSoup 
>>> tree = BeautifulSoup(s) 

с помощью contents:

>>> tree.li.contents 
['\n', <span class="B"> Some_string_here </span>, '\n " MY DESIRED STRING "\n ', <div class="C"> Some_string_here </div>, '\n'] 
>>> tree.li.contents[2].strip() 
'" MY DESIRED STRING "' 

с использованием strings или stripped_strings:

>>> list(tree.li.stripped_strings) 
['Some_string_here', '" MY DESIRED STRING "', 'Some_string_here'] 

с использованием find_all:

>>> tree.li.find_all(text=True, recursive=False) 
['\n', '\n " MY DESIRED STRING "\n ', '\n'] 

и есть, вероятно, несколько других способов ...

+0

Спасибо! Ценить это! Я также нашел другой метод из другого сообщения: tree.li.span.next_sibling – Jason

Смежные вопросы