首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Wikipedia pageview数据获取(bigquery)

Wikipedia pageview数据获取(bigquery)

作者头像
千灵域
发布于 2022-06-17 04:54:28
发布于 2022-06-17 04:54:28
3.1K00
代码可运行
举报
文章被收录于专栏:challenge filterchallenge filter
运行总次数:0
代码可运行

pageview数据介绍

维基百科pageview数据是Wikimedia技术团队所维护的访问量数据集。该数据集自2015年五月启用,其具体的pageview定义为对某个网页内容的请求,会对爬虫和人类的访问量进行区分,粒度为小时级别,如下图:

bigquery介绍

维基百科数据可以通过其API获取。但是API只能拿到每个页面天级别的数据或者全部页面小时级的数据,如果需要获取每个页面小时级的数据,则需要通过其原始数据文件进行分析。但是这部分文件的数量实在是太多了,因此使用bigquery是一个不错的选择。

bigquery请求

可以使用SQL命令对其进行请求。由于数据在bigquery中使用分区表的形式存放,因此每次请求一年的数据。 以下代码以2015年的数据请求为例:

WARNING:Bigquery并不是免费的,每次请求可能需要消耗十几个GB的额度,请注意!

  1. 获取全部数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT wiki,datehour,SUM(views) as totalViews FROM `bigquery-public-data.wikipedia.pageviews_2015` WHERE datehour BETWEEN "2015-01-01" AND "2016-01-01" 
GROUP BY datehour,wiki;
  1. 获取各个语言版本维基的首页数据。这个是因为大部分维基百科的页面数量都非常小
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM `bigquery-public-data.wikipedia.pageviews_2020`
 WHERE datehour BETWEEN "2020-01-01" AND "2021-01-01" AND ( (wiki='en' AND (title='Main_Page' OR title='Special:Search')) 
      OR (wiki='en.m' AND (title='Main_Page' OR title='Special:Search'))
      OR (wiki='zh' AND (title='Wikipedia:首页' OR title='Special:搜索'))
      OR (wiki='de' AND (title='Wikipedia:Hauptseite' OR title='Spezial:Suche'))
      OR (wiki='fr' AND (title='Wikipédia:Accueil_principal' OR title='Spécial:Recherche'))
      OR (wiki='ja' AND (title='メインページ' OR title='特別:検索'))
      OR (wiki='ru' AND (title='Заглавная_страница' OR title='Служебная:Поиск'))
      OR (wiki='ar' AND (title='الصفحة_الرئيسية' OR title='خاص:بحث'))
      OR (wiki='ca' AND (title='Portada' OR title='Especial:Cerca'))
      OR (wiki='it' AND (title='Pagina_principale' OR title='Speciale:Ricerca'))
      );
  1. top100en_Leakage:英文维基百科2015年访问量最大的前100个页面数据,但是写错了,最后变成了访问量大于100的页面。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT title FROM (
SELECT title,AVG(views) AS perviews FROM `bigquery-public-data.wikipedia.pageviews_2015` WHERE datehour BETWEEN "2015-07-12" AND "2015-07-13" AND wiki='en' 
GROUP BY title)
WHERE perviews>100;
  1. top100en:英文维基百科2015年访问量最大的前100个页面数据。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT wiki.datehour,wiki.title,wiki.views FROM (
  SELECT innerViewer.title,innerViewer.perviews FROM(
    SELECT title,AVG(views) AS perviews,COUNT(*) as viewCount FROM `bigquery-public-data.wikipedia.pageviews_2015` WHERE datehour BETWEEN "2015-01-01" AND "2016-01-01" AND wiki='en' 
    GROUP BY title ORDER BY perviews) innerViewer
   WHERE innerViewer.perviews>500 AND viewCount > 3600 LIMIT 100) doc, `bigquery-public-data.wikipedia.pageviews_2019` as wiki
 WHERE wiki.datehour BETWEEN "2019-01-01" AND "2020-01-01" AND wiki.title = doc.title AND wiki.wiki='en';

由于各种原因,总耗费折算为人民币超过一千元。当然,并没有超过谷歌给新用户的免费额度,所以实际上应该是没有花费。为了方便之后获取,我将其上传到百度云盘上了。

防止爬虫,链接使用了base64进行加密:aHR0cHM6Ly9wYW4uYmFpZHUuY29tL3MvMWJRbll2OFUyZTZKTi1NV3c0MjJDOWc=,提取码为p3o5。

进一步处理

写了个python程序进行进一步的处理,以获取每个页面的pageview访问数据。 目标为得到对应页面五年来的pageview数据并保存为csv文件。该csv文件至少有两列,一列为日期,一列为小时级别的访问量。

数据使用top100en数据为基础,放在E盘的wikidata中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from datetime import datetime
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import os
os.chdir(r"E:\wikidata")
# 2015的版本作为基底
dirname = 'top100en'
filename = '2015.csv'
baseData = pd.read_csv(dirname+'\\'+filename,encoding='utf-8')

grouped_result = baseData.groupby('title')
# convert result to dictionary
baseDict = {}
for name,group in grouped_result:
    baseDict[name] = group
# 开始遍历后面的所有年份
for year in range(2016,2021):
    keys = list(baseDict.keys())
    filename = str(year)+'.csv'
    yearData = pd.read_csv(dirname+'\\'+filename,encoding='utf-8')
    grouped_result = yearData.groupby('title')

    # 遍历所有的keys,尝试将pandas DataFrame数据进行拼接
    errorList = []
    for key in keys:
        try:
            newDataFrame = grouped_result.get_group(key)
            #将获取到的新值与旧有数据进行拼接
            baseDict[key] = pd.concat([baseDict[key],newDataFrame])
        except KeyError:
            #如果该值没有找到,则会报这个错误。此时记录下来,循环结束后将其从baseData中删除
            errorList.append(key)
    
    print("error_list of year {} is {}".format(year,errorList))
    print('Delete them')
    for errorItem in errorList:
        del baseDict[errorItem]


# 获取数据
data = baseDict["Donald_Trump"] # ! 此处修改需要获取的页面名称
data.sort_values("datehour",inplace=True)
outputData = data["views"].to_numpy()
print("数据长度",len(data))
# 进行改写
newDF = data[["datehour","views"]]
newDF.columns = ["datetime","view"]
newDF["datetime"] = newDF["datetime"].apply(lambda x: datetime.strptime(x,"%Y-%m-%d %H:%M:%S %Z").strftime("%Y%m%d%H"))
newDF.to_csv("result.csv",index=False) # 导出
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ollama安装初体验
Ollama官网:https://ollama.com/,官方网站的介绍就一句话:Get up and running with large language models. (开始使用大语言模型。)下载直接双击安装即可,由于网络原因可能下载不了,这里也可以去国内aistudio.baidu.com/datasetdetail/314989下载。 Ollama是一个开源的 LLM(大型语言模型)服务工具,用于简化在本地运行大语言模型、降低使用大语言模型的门槛,使得大模型的开发者、研究人员和爱好者能够在本地环境快速实验、管理和部署最新大语言模型,包括如Qwen2、Llama3、Phi3、Gemma2等开源的大型语言模型。
云未归来
2025/07/16
1490
ollama安装初体验
周末用笔记本搞点大事:手把手教学部署 1.5、7B 版本 DeepSeek 智能助手
最近工作周边听到最多的话题莫过于 DeepSeek 和哪吒 2 了,创作者的精神都是值得我们学习,作为普通人就是不断去深耕一个领域,最终多少都会有收获。
希里安
2025/03/31
3380
周末用笔记本搞点大事:手把手教学部署 1.5、7B 版本  DeepSeek 智能助手
Deepseek 本地部署“网页版”与“软件版”超级详细教学(deepseek+Ollama+OpenWebUI+Chatbox AI+Cherry Studi
近期,人工智能领域迎来了一股新的热潮,DeepSeek作为一款备受瞩目的开源语言模型,凭借其卓越的性能和广泛的应用场景,迅速在全球范围内引起了广泛关注。从技术社区到商业领域,DeepSeek的热度不断攀升,甚至有“挤爆”的趋势。这不仅反映了其强大的技术实力,也体现了市场和用户对其的高度期待。
久绊A
2025/02/20
3.2K0
Ollama搭配DeepSeek,本地部署全攻略
在人工智能领域,大型语言模型(LLMs)正变得越来越普及,而将这些模型部署到本地设备上,不仅可以提高数据隐私性,还能降低对网络的依赖。Ollama 是一个开源工具,能够帮助用户轻松地在本地运行各种大型语言模型,包括 DeepSeek。本文将详细介绍如何通过 Ollama 在本地安装和使用 DeepSeek 模型。
小博测试成长之路
2025/02/18
2.7K0
Ollama搭配DeepSeek,本地部署全攻略
Ollama一个简明易用的本地大模型运行框架,只需一条命令即可在本地跑大模型
Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型,通过简单的安装指令,可以让用户执行一条命令就在本地运行开源大型语言模型,例如 Llama2。这个框架简化了在Docker容器内部署和管理LLM的过程,使得用户能够快速地在本地运行大型语言模型。
机器学习AI算法工程
2024/05/10
6.3K0
Ollama一个简明易用的本地大模型运行框架,只需一条命令即可在本地跑大模型
使用 Ollama 自建大模型并对接第三方平台二次分发盈利
随着AI不断的发展,各大厂商都公开了很多模型,那么我们自己是否可以在本地运行起这些模型呢,答案是肯定的!今天带给大家3分钟使用Ollama快速搭建环境运行本地大模型,支持主流的Lama 3, Phi 3, Mistral, Gemma等等大模型,同时支持主流操作系统,不管你是Mac还是Linux更或者是Windows,哪怕你没有强大的GPU,也可以通过CPU进行体验学习。
Lcry
2024/07/17
3.3K0
使用 Ollama 自建大模型并对接第三方平台二次分发盈利
端侧大模型实战指南:微调、部署、应用开发
端侧大模型是指在边缘设备(如个人电脑、移动设备等)上运行的大型语言模型。相较于云端部署,端侧模型具有以下优势:
GoodTime
2025/08/05
3850
端侧大模型实战指南:微调、部署、应用开发
DeepSeek从云端模型部署到应用开发-02-ollama+deepseekr1本地部署
DeepSeek现在流行度正盛,今年的机器学习就用他作为一个开端,开整。 本文是基于百度aistudio的在线课程《DeepSeek从云端模型部署到应用开发》。
IT从业者张某某
2025/03/15
2190
DeepSeek从云端模型部署到应用开发-02-ollama+deepseekr1本地部署
在本地电脑部署自己的 DeepSeek 大模型 AI:小白也能轻松上手
最近 DeepSeek 大模型 AI 火遍全网,我也忍不住去了解了一番。尝试在本地部署后,发现整个过程非常简单,于是决定记录下来,分享给大家。本文将以最基础的方式演示如何部署,无需使用 Docker 容器,也不需要“魔法上网”,即使是计算机小白也能按照步骤轻松完成。
后端码匠
2025/02/06
3.5K0
windows本地部署DeepSeek-R1模型
最近,在学习之余,我关注到了一个备受瞩目的热点话题——deepseek。这个横空出世的AI模型不仅效果超越了同期顶级AI,离谱的是,参数量不增反降的情况下,性能却大幅提升。最重要的是,deepseek是一个开源模型,这意味着人人都能享受到AI的强大力量。国内科技爱好者们对此激动不已,纷纷热议这一突破性进展。
柳神
2025/02/09
8210
windows本地部署DeepSeek-R1模型
大模型部署工具 Ollama 使用指南:技巧与问题解决全攻略
Ollama 是一个开源的本地大模型部署工具,旨在简化大型语言模型(LLM)的运行和管理。通过简单命令,用户可以在消费级设备上快速启动和运行开源模型(如 Llama、DeepSeek 等),无需复杂配置。它提供 OpenAI 兼容的 API,支持 GPU 加速,并允许自定义模型开发。
wayn
2025/04/09
3.2K0
大模型部署工具 Ollama 使用指南:技巧与问题解决全攻略
【人工智能】什么是环境变量?文件放在C盘下会有哪些影响?如何操作Ollama?
当我们在完成了Ollama的安装后,我们会发现Ollama会默认安装在C盘中,我们又应该如何更改Ollama的安装位置,并且保证它的使用不受影响呢?我们在安装好Ollama后又应该如何使用Ollama呢?
蒙奇D索隆
2025/02/10
2880
【人工智能】什么是环境变量?文件放在C盘下会有哪些影响?如何操作Ollama?
使用DeepSeek搭建个人知识库
对于想要在本地或自托管环境中运行 LLM 的用户而言,Ollama 提供了一个无需 GPU、在 CPU 环境也可高效完成推理的轻量化 “本地推理” 方案。而要让 Ollama 真正 “接地气”,往往需要与其他开源项目进行配合——例如将文档、数据源或应用前端与 Ollama 打通,这便衍生出许多解决方案。
lyushine
2025/04/02
4660
如何利用腾讯云轻量服务器搭建本地端DeepSeek
近期比较火的大模型DeepSeek AI很多兄弟们想自己本地配置却因为害怕电脑配置不够而没有去配置。
小胡同学
2025/02/05
9580
Spring AI调用Ollama+DeepSeek
ChatClient 是一个接口,它定义了一个与聊天服务交互的客户端。这个接口主要用于创建聊天客户端对象,设置请求规范,以及发起聊天请求。
鱼找水需要时间
2025/06/02
4330
Spring AI调用Ollama+DeepSeek
JDK的正确安装和配置
JDK的全称是Java Development Kit,翻译成中文就是Java开发工具包,主要包括Java运行环境、一些Java命令工具和Java基础的类库文件。 JDK是开发任何类型Java应用程序的基础,而开发Android应用程序时主要使用的开发语言就是Java,而且安装IDE集成开发环境也需要JDK的支持。 一、JDK的下载 JDK程序安装包可以从Sun公司的官方网站免费下载,网址 http://www.oracle.com ,最新的版本是1.8,建议使用1.6以上的版本,
分享达人秀
2018/02/02
1.6K0
JDK的正确安装和配置
释放无限潜能 —— DeepSeek-R1:顶尖开源AI大模型,本地部署从未如此简单与强大
双击安装文件,点击「Install」开始安装。目前的Ollama会默认安装到C盘,路径如下:C:\Users%username%\AppData\Local\Programs\Ollama,并不会让用户自定义选择安装路径。
陌涛
2025/01/29
1.4K0
释放无限潜能 —— DeepSeek-R1:顶尖开源AI大模型,本地部署从未如此简单与强大
Linux内网离线安装Ollama
在线安装地址https://ollama.com/download选择服务器系统,按照步骤完成安装
IT小马哥
2024/08/15
7.5K0
Linux内网离线安装Ollama
Ollama 安装与使用指南笔记
在探索大模型的道路上,Ollama 作为一款开源项目为我们提供了很大的便利。下面将详细介绍它的安装与使用,并补充一些常见问题及解决方法。
ceagle
2024/12/30
5.2K0
手把手教你:Windows与Linux下Dify+DeepSeek实现ragflow构建企业知识库
在当今人工智能飞速发展的时代,大语言模型(LLMs)已经成为众多领域的核心技术驱动力。无论是在智能客服、智能写作,还是在数据分析、决策支持等方面,大语言模型都展现出了强大的能力和潜力。然而,随着数据安全和隐私保护意识的不断提高,越来越多的企业和开发者开始寻求本地化部署大语言模型的解决方案,以确保数据的安全性和可控性。
范赟鹏
2025/05/30
1.5K0
手把手教你:Windows与Linux下Dify+DeepSeek实现ragflow构建企业知识库
推荐阅读
相关推荐
ollama安装初体验
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验