WikiPedia文章中的词频

时间:2017-10-11 05:20:21

标签: python-3.x web-crawler information-retrieval mediawiki-api information-extraction

如何在不存储整篇文章的情况下获取维基百科文章中指定单词的频率然后进行处理?例如,“" India"发生在本文https://simple.wikipedia.org/wiki/India

1 个答案:

答案 0 :(得分:1)

这是一个简单的例子,它逐行读取网页。但是无法保证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结构中,而不仅仅是内容中,那么它也会计算。

如果您想专注于内容,请考虑使用首选MediaWiki API提取内容的Pywikibot python library,但它似乎是基于“一次完整页面”模型,您注意到它是试图避免。无论如何,该模块的文档指向您可能想要查看的类似但更高级的包列表。