【发布时间】:2018-03-22 15:59:47
【问题描述】:
如何在不存储整篇文章的情况下获取维基百科文章中指定单词的频率然后对其进行处理?例如,“印度”这个词在这篇文章中出现的次数有多少次https://simple.wikipedia.org/wiki/India
【问题讨论】:
标签: python-3.x web-crawler information-retrieval mediawiki-api information-extraction
如何在不存储整篇文章的情况下获取维基百科文章中指定单词的频率然后对其进行处理?例如,“印度”这个词在这篇文章中出现的次数有多少次https://simple.wikipedia.org/wiki/India
【问题讨论】:
标签: python-3.x web-crawler information-retrieval mediawiki-api information-extraction
这是一个逐行读取网页的简单示例。但是不能保证 HTML 被分解成 行。 (在这种情况下,超过 1300 个。)
import re
import urllib.request
from collections import Counter
URL = 'https://simple.wikipedia.org/wiki/India'
counter = Counter()
with urllib.request.urlopen(URL) as source:
for line in source:
words = re.split(r"[^A-Z]+", line.decode('utf-8'), flags=re.I)
counter.update(words)
for word in ['India', 'Indian', 'Indians']:
print('{}: {}'.format(word, counter[word]))
输出
> python3 test.py
India: 547
Indian: 75
Indians: 11
>
如果它们出现在页面的 HTML 结构中,这也计算术语,而不仅仅是内容。
如果您想专注于内容,请考虑Pywikibot python library,它使用首选的 MediaWiki API 来提取内容,尽管它似乎是基于您指出您正在尝试的“一次完整页面”模型避免。无论如何,该模块的文档指向您可能想要查看的类似但更高级的软件包列表。