文本提取:使用了所有方法,但卡住了
Text Extracting: Used All Methods, Yet Stuck
我想从网页中提取一些文本。我搜索了 Whosebug(以及其他网站)以找到合适的方法。我使用 HTML2TEXT、BEAUTIFULSOUP、NLTK 和其他一些手动方法进行提取,但我失败了,例如:
- HTML2TEXT 离线工作(=保存的页面),我需要在线完成。
- BS4 无法在 Unicode 上正常工作(我的页面采用 UTF8 波斯语编码)并且无法提取文本。它还returns HTML tags\codes。我只需要渲染的文本。
- NLTK 无法处理我的波斯语文本。
即使在尝试使用 urllib.request.urlopen 打开我的页面时,我也会遇到一些错误。
因此,如您所见,我在尝试了几种方法后陷入了困境。
这是我的目标 URL:http://vynylyn.yolasite.com/page2.php
我只想提取没有 tags\codes.
的波斯语段落
(注意:我使用 Eclipse Kepler w\ Python 34 我还想提取文本,然后我想对文本进行 POS 标记、Word\Sentence 分词等。)
我有哪些选择可以让它发挥作用?
首先我会选择你的第二个选项。 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>")
我想从网页中提取一些文本。我搜索了 Whosebug(以及其他网站)以找到合适的方法。我使用 HTML2TEXT、BEAUTIFULSOUP、NLTK 和其他一些手动方法进行提取,但我失败了,例如:
- HTML2TEXT 离线工作(=保存的页面),我需要在线完成。
- BS4 无法在 Unicode 上正常工作(我的页面采用 UTF8 波斯语编码)并且无法提取文本。它还returns HTML tags\codes。我只需要渲染的文本。
- NLTK 无法处理我的波斯语文本。 即使在尝试使用 urllib.request.urlopen 打开我的页面时,我也会遇到一些错误。 因此,如您所见,我在尝试了几种方法后陷入了困境。
这是我的目标 URL:http://vynylyn.yolasite.com/page2.php 我只想提取没有 tags\codes.
的波斯语段落(注意:我使用 Eclipse Kepler w\ Python 34 我还想提取文本,然后我想对文本进行 POS 标记、Word\Sentence 分词等。)
我有哪些选择可以让它发挥作用?
首先我会选择你的第二个选项。 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>")