2015-10-28 2 views
3

Я ищу использовать BeautifulSoup для анализа текстов на тип веб-страницы и коды ниже:Python: разбор текстов между ключевыми словами

import urllib 
import re 

html = urllib.urlopen('http://english.hani.co.kr/arti/english_edition/e_national/714507.html').read() 
content= str(soup.find("div", class_="article-contents")) 

Так что моя цель состоит в том, чтобы разобрать по крайней мере, первое предложение или первый несколько предложений в первом абзаце.

Поскольку абзацы не окружены <p> тегом, моя лучшая стратегия до сих пор найти, в пределах содержания, тексты, которые идут между </h4> и <p> (что случается, первый абзац)

Вот как целевые тексты выглядеть следующим образом:

<div class="article-contents"> 
<div class="article-alignC"> 
<table class="photo-view-area"> 
<tr> 
<td> 
<img alt="" border="0" src="http://img.hani.co.kr/imgdb/resize/2015/1024/00542577201_20151024.JPG" style="width:590px;"/> 
</td> 
</tr> 
</table> 
</div> 
<h4></h4> 

(Это где содержимое Я хочу разобрать, между <h4> и <p>) <p align="justify"></p>

Я пытаюсь сделать это прямо на BeautifulSoup или использовать регулярное выражение, но до сих пор я до сих пор не увенчался успехом.

ответ

3

Расположить в h4 элемент и найти первый следующий текст родственный с помощью find_next_sibling():

h4 = soup.select_one("div.article-contents > h4") 
print(h4.find_next_sibling(text=True)) 

Печать:

US scholar argues that any government attempt to impose single view of history is misguided On Oct. 19, the Hankyoreh’s Washington correspondent conducted on interview with phone and email with William North, chair of the history department at Carleton University in Minnesota. The main topic of the discussion was the efforts of the administration of South Korean President Park Geun-hye to take over the production of history textbooks.  

Ну, на самом деле, только с помощью .next_sibling достаточно хорошо здесь:

print(h4.next_sibling) 
+0

Спасибо, хотя и не обязательно здесь, это хорошо знать (текст = истина)! –

+0

Еще один вопрос: есть ли способ вернуть второй абзац вместо первого в той же настройке? –

+0

@carl_pch не тестировались, но попробуйте: 'h4.find_next_siblings (text = True) [1]'. – alecxe

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