0

0

从维基百科术语表中提取所有页面的浏览量

花韻仙語

花韻仙語

发布时间:2025-08-08 18:24:29

|

760人浏览过

|

来源于php中文网

原创

从维基百科术语表中提取所有页面的浏览量

本文将介绍如何从维基百科的术语表页面提取所有子页面的浏览量。由于术语表页面的内容是非结构化的,因此无法像处理分类页面那样直接提取浏览量。本文将指导你如何通过解析页面内容提取页面标题,并使用维基百科 Pageviews API 获取每个页面的浏览量,同时提供Python示例代码演示该过程。

提取页面标题

由于维基百科术语表页面的结构是非结构化的,我们需要首先解析页面内容,提取所有链接指向的页面标题。 这通常涉及使用 HTML 解析库,例如 Python 中的 Beautiful Soup。

import requests
from bs4 import BeautifulSoup

def extract_page_titles(url):
    """
    从维基百科页面提取所有链接的页面标题。

    Args:
        url (str): 维基百科页面的 URL。

    Returns:
        list: 页面标题列表。
    """
    try:
        response = requests.get(url)
        response.raise_for_status()  # 检查请求是否成功

        soup = BeautifulSoup(response.content, 'html.parser')
        # 根据实际页面结构调整选择器
        links = soup.find_all('a', href=True)
        page_titles = []
        for link in links:
            href = link['href']
            if href.startswith('/wiki/') and not any(x in href for x in [':', '#']):
                title = href.replace('/wiki/', '')
                page_titles.append(title)
        return page_titles
    except requests.exceptions.RequestException as e:
        print(f"请求错误: {e}")
        return []
    except Exception as e:
        print(f"解析错误: {e}")
        return []

# 示例用法
url = 'https://en.wikipedia.org/wiki/Glossary_of_areas_of_mathematics'
page_titles = extract_page_titles(url)
print(page_titles)

代码解释:

  1. 导入库: 导入 requests 用于发送 HTTP 请求,BeautifulSoup 用于解析 HTML。
  2. extract_page_titles(url) 函数:
    • 接受维基百科页面 URL 作为输入。
    • 使用 requests.get() 获取页面内容。
    • 使用 BeautifulSoup 解析 HTML 内容。
    • 使用 soup.find_all('a', href=True) 查找所有 <a> 标签,并检查它们是否有 href 属性。
    • 遍历所有找到的链接,提取 href 属性。
    • 过滤掉不符合要求的链接,例如指向站内其他位置的链接(包含:或#),以及非/wiki/开头的链接。
    • 从 href 属性中提取页面标题(删除 /wiki/ 前缀)。
    • 返回页面标题列表。
  3. 示例用法:
    • 指定维基百科术语表页面的 URL。
    • 调用 extract_page_titles() 函数获取页面标题列表。
    • 打印页面标题列表。

注意事项:

  • 你需要根据实际的维基百科页面结构调整 soup.find_all() 中的选择器。 维基百科的页面结构可能会改变,所以需要根据实际情况进行调整。
  • 该代码仅提取以/wiki/开头的链接,并排除了包含:和#的链接。你可能需要根据你的具体需求修改过滤条件。
  • 错误处理:添加了 try...except 块来处理可能出现的请求错误和解析错误。

获取页面浏览量

提取页面标题后,可以使用维基百科 Pageviews API 获取每个页面的浏览量。

Otter.ai
Otter.ai

一个自动的会议记录和笔记工具,会议内容生成和实时转录

下载
import requests
import json

def get_pageviews(titles, start='20000101', end='20231001'):
    """
    从维基百科 Pageviews API 获取页面的浏览量。

    Args:
        titles (list): 页面标题列表。
        start (str): 开始日期 (YYYYMMDD)。
        end (str): 结束日期 (YYYYMMDD)。

    Returns:
        dict: 页面标题和浏览量组成的字典。
    """
    endpoint = "https://pageviews.toolforge.org/api/views/"
    pageviews = {}

    # API 有标题数量限制,所以分批处理
    batch_size = 50
    for i in range(0, len(titles), batch_size):
        batch = titles[i:i + batch_size]
        titles_str = "|".join(batch)
        url = f"{endpoint}?page={titles_str}&start={start}&end={end}"

        try:
            response = requests.get(url)
            response.raise_for_status()
            data = response.json()

            for page in batch:
                pageviews[page] = data.get(page, {'views': 0})['views']  # 默认浏览量为 0

        except requests.exceptions.RequestException as e:
            print(f"请求错误: {e}")
        except json.JSONDecodeError as e:
            print(f"JSON 解析错误: {e}")

    return pageviews


# 示例用法
# 假设 page_titles 是从上一步提取的页面标题列表
if page_titles: # 检查列表是否为空
    pageviews = get_pageviews(page_titles)
    for title, views in pageviews.items():
        print(f"{title}: {views}")
else:
    print("没有提取到页面标题,无法获取浏览量。")

代码解释:

  1. 导入库: 导入 requests 用于发送 HTTP 请求,json 用于解析 JSON 响应。
  2. get_pageviews(titles, start, end) 函数:
    • 接受页面标题列表、开始日期和结束日期作为输入。
    • 构建 Pageviews API 的 URL。
    • 发送 HTTP GET 请求到 API。
    • 解析 API 响应的 JSON 数据。
    • 提取每个页面的浏览量,并将结果存储在字典中。
    • 返回页面标题和浏览量组成的字典。
  3. 批量处理: 由于 Pageviews API 对一次请求中可以传递的标题数量有限制,代码将标题列表分成小批次进行处理。 batch_size 变量控制每个批次的大小。
  4. 错误处理: 添加了 try...except 块来处理可能出现的请求错误和 JSON 解析错误。
  5. 示例用法:
    • 调用 get_pageviews() 函数获取页面浏览量。
    • 遍历结果字典,打印每个页面标题和对应的浏览量。

注意事项:

  • Pageviews API 有请求频率限制。 如果你需要获取大量页面的浏览量,请注意控制请求频率,避免被 API 限制。 可以考虑使用 time.sleep() 函数在每次请求之间添加延迟。
  • start 和 end 参数指定要获取浏览量的时间范围。 请根据你的需求修改这些参数。
  • API 响应的 JSON 结构可能会改变。 如果代码无法正常工作,请检查 API 文档并更新代码。
  • 增加空列表的判断,避免因page_titles为空导致程序报错。

总结

通过以上步骤,你可以从维基百科的术语表页面提取所有子页面的浏览量。 首先,你需要解析页面内容,提取所有链接指向的页面标题。 然后,使用维基百科 Pageviews API 获取每个页面的浏览量。 请注意处理 API 的请求频率限制,并根据实际的页面结构和 API 响应更新代码。 此外,请注意遵守维基媒体的使用条款。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

457

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

497

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

452

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

3612

2024.03.12

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号