python - 如何使用 Python 抓取类别维基百科页面类别中的子类别和页面

标签 python json web-scraping wikipedia

所以我试图抓取类别页面的类别标题下的所有子类别和页面:“类别:基于类的编程语言”位于:

https://en.wikipedia.org/wiki/Category:Class-based_programming_languages

我找到了一种使用 url 和 mediawiki API 来执行此操作的方法:Categorymembers。这样做的方法是:

  • 基础:en.wikipedia.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Class-based%20programming%20languages&format=json&cmlimit=500
  • 基础:en.wikipedia.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Class-based%20programming%20languages&format=json&cmlimit=500&cmtype=subcat

但是,我找不到使用 Python 完成此操作的方法。有人可以帮我吗?

这是为了独立学习,我在这上面花了很多时间,但似乎无法弄清楚。此外,禁止使用 Beautifulsoup。感谢您的所有帮助!

最佳答案

好的,在进行更多研究和学习之后,我找到了自己问题的答案。使用库 urllib.request 和 json,我导入了 json 格式的维基百科 url 文件,并简单地打印了它的类别。这是我用来获取子类别的代码:

pages = urllib.request.urlopen("https://en.wikipedia.org/w/api.phpaction=query&list=categorymembers&cmtitle=Category:Class-based%20programming%20languages&format=json&cmlimit=500&cmtype=subcat")
data = json.load(pages)
query = data['query']
category = query['categorymembers']
for x in category:
    print (x['title'])

您可以对类别中的页面执行相同的操作。感谢 Nemo 试图帮助我!

关于python - 如何使用 Python 抓取类别维基百科页面类别中的子类别和页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42495405/

相关文章:

python - 我做错了什么? Django 对象过滤器

python - 网络爬虫返回多个错误

python - 使用scrapy爬取bbs时Twist失败

python - 将列表转换为字符串后我无法得到 [0]

python - 使用元组过滤和拆包处理空情况

json - 为什么仅为 POST 请求/201(已创建)响应设置 HTTP 位置 header ?

PHP CURL 使用 POST 原始 JSON 数据

Python - 当 url 可能被重写时确定正确的基本 url

python - 使用 pytz 从 UTC 偏移 "Canonical"?

c# - JavascriptSerializer、Deserializer,无法反序列化我的对象