文本提取:使用了所有方法,但仍然存在

时间:2015-01-16 18:37:43

标签: python beautifulsoup webpage extraction persian

我想从网页中提取一些文字。我搜索了StackOverFlow(以及其他网站)以找到合适的方法。我使用HTML2TEXT,BEAUTIFULSOUP,NLTK和其他一些手动方法进行提取,但我失败了例如:

  • HTML2TEXT适用于离线(=保存的页面),我需要在线完成。
  • BS4无法在Unicode上正常工作(我的网页采用UTF8波斯语编码),它不会提取文本。它还返回HTML标记\代码。我只需要渲染文字。
  • NLTK无法处理我的波斯语文本。 即使在尝试使用urllib.request.urlopen打开我的页面时,我也遇到了一些错误。 所以你看到我在尝试了几种方法之后就陷入了困境。

这是我的目标网址:http://vynylyn.yolasite.com/page2.php 我想只提取没有tags \ codes的波斯段落。

(注意:我使用Eclipse Kepler w \ Python 34也想提取文本然后我想在文本上进行POS标记,Word \ Sentence Tokenizing等。)

我有什么选择让这个工作?

1 个答案:

答案 0 :(得分:1)

我一开始就选择第二个选项。 BeautifulSoup 4应该(而且确实)肯定是support unicode(注意它的UTF-8,一个全局字符编码,因此没有任何关于它的波斯语。)

是的,你会得到标签,因为它是一个HTML页面。尝试搜索唯一ID,或查看页面上的HTML结构。对于您的示例,请查找元素main,然后查找下面的内容元素,或者在该特定页面中使用div#I1_sys_txt。获得元素后,只需拨打get_text()

试试这个(现在在Python 3中):

#!/usr/bin/env python3
import requests
from bs4 import BeautifulSoup

content = requests.get('http://vynylyn.yolasite.com/page2.php')
soup = BeautifulSoup(content.text)

tag = soup.find('div', id='I1_sys_txt')
print(tag.get_text() if tag else "<none found>")