文本提取:使用了所有方法,但仍卡住了

问题描述 投票:0回答:2

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

  • HTML2TEXT可在脱机(=保存的页面)上工作,我需要在线进行。
  • BS4无法在Unicode上正常工作(我的页面使用UTF8波斯编码),并且无法提取文本。它还返回HTML标记\代码。我只需要呈现的文本。
  • NLTK无法用于我的波斯文字。即使在尝试使用urllib.request.urlopen打开页面时,我仍然遇到一些错误。因此,如您所见,在尝试了几种方法后,我感到非常困惑。

这是我的目标网址:http://vynylyn.yolasite.com/page2.php我只想提取不带标签\代码的波斯语段落。

((注:我使用带Python 34的Eclipse Kepler,也想提取文本,然后要对文本进行POS标记,Word \句子标记化等。)

我有什么选择使它正常工作?

python beautifulsoup webpage extraction persian
2个回答
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>")

0
投票

[您可以使用提取库来执行任务,例如trafilatura,它使用LXML(比BeautifulSoup更快)并且可以在您提到的网页上直接使用。

© www.soinside.com 2019 - 2024. All rights reserved.