重新拟订的问题:
嗨,
当我运行这段代码时:
import pageviewapi
views = pageviewapi.per_article('en.wikipedia', 'Samuel_John_Carter','20150701','20191201', access='all-access', agent='user', granularity='monthly')
print(views)
print(type(views))我得到了这个结果:
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
* AttrDict({'items': [{'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015070100', 'access': 'all-access', 'agent': 'user', 'views': 75}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015080100', 'access': 'all-access', 'agent': 'user', 'views': 64}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015090100', 'access': 'all-access', 'agent': 'user', 'views': 94}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015100100', 'access': 'all-access', 'agent': 'user', 'views': 90}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015110100', 'access': 'all-access', 'agent': 'user', 'views': 91}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015120100', 'access': 'all-access', 'agent': 'user', 'views': 73}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016010100', 'access': 'all-access', 'agent': 'user', 'views': 91}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016020100', 'access': 'all-access', 'agent': 'user', 'views': 88}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016030100', 'access': 'all-access', 'agent': 'user', 'views': 82}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016040100', 'access': 'all-access', 'agent': 'user', 'views': 95}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016050100', 'access': 'all-access', 'agent': 'user', 'views': 86}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016060100', 'access': 'all-access', 'agent': 'user', 'views': 76}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016070100', 'access': 'all-access', 'agent': 'user', 'views': 75}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016080100', 'access': 'all-access', 'agent': 'user', 'views': 81}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016090100', 'access': 'all-access', 'agent': 'user', 'views': 79}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016100100', 'access': 'all-access', 'agent': 'user', 'views': 173}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016110100', 'access': 'all-access', 'agent': 'user', 'views': 170}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016120100', 'access': 'all-access', 'agent': 'user', 'views': 84}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017010100', 'access': 'all-access', 'agent': 'user', 'views': 131}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017020100', 'access': 'all-access', 'agent': 'user', 'views': 76}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017030100', 'access': 'all-access', 'agent': 'user', 'views': 94}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017040100', 'access': 'all-access', 'agent': 'user', 'views': 234}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017050100', 'access': 'all-access', 'agent': 'user', 'views': 213}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017060100', 'access': 'all-access', 'agent': 'user', 'views': 286}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017070100', 'access': 'all-access', 'agent': 'user', 'views': 190}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017080100', 'access': 'all-access', 'agent': 'user', 'views': 186}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017090100', 'access': 'all-access', 'agent': 'user', 'views': 175}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017100100', 'access': 'all-access', 'agent': 'user', 'views': 212}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017110100', 'access': 'all-access', 'agent': 'user', 'views': 255}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017120100', 'access': 'all-access', 'agent': 'user', 'views': 231}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018010100', 'access': 'all-access', 'agent': 'user', 'views': 339}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018020100', 'access': 'all-access', 'agent': 'user', 'views': 257}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018030100', 'access': 'all-access', 'agent': 'user', 'views': 299}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018040100', 'access': 'all-access', 'agent': 'user', 'views': 254}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018050100', 'access': 'all-access', 'agent': 'user', 'views': 262}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018060100', 'access': 'all-access', 'agent': 'user', 'views': 242}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018070100', 'access': 'all-access', 'agent': 'user', 'views': 197}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018080100', 'access': 'all-access', 'agent': 'user', 'views': 187}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018090100', 'access': 'all-access', 'agent': 'user', 'views': 191}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018100100', 'access': 'all-access', 'agent': 'user', 'views': 223}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018110100', 'access': 'all-access', 'agent': 'user', 'views': 256}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018120100', 'access': 'all-access', 'agent': 'user', 'views': 211}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019010100', 'access': 'all-access', 'agent': 'user', 'views': 255}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019020100', 'access': 'all-access', 'agent': 'user', 'views': 244}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019030100', 'access': 'all-access', 'agent': 'user', 'views': 257}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019040100', 'access': 'all-access', 'agent': 'user', 'views': 230}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019050100', 'access': 'all-access', 'agent': 'user', 'views': 234}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019060100', 'access': 'all-access', 'agent': 'user', 'views': 199}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019070100', 'access': 'all-access', 'agent': 'user', 'views': 224}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019080100', 'access': 'all-access', 'agent': 'user', 'views': 207}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019090100', 'access': 'all-access', 'agent': 'user', 'views': 255}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019100100', 'access': 'all-access', 'agent': 'user', 'views': 265}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019110100', 'access': 'all-access', 'agent': 'user', 'views': 330}]})
*/
<class 'attrdict.dictionary.AttrDict'>我是个新手,白手起家。谁能建议一种获得所有时间戳的具体方法:从这个杂乱的输出中获取视图数据点吗?我很想知道这是嵌套字典还是json对象。
非常感谢任何人都能提供的帮助!
*原来的问题:在这里旋转我的轮子。我正在尝试处理Python脚本的输出。当我打印输出时,我会得到类似的内容(当然,更多)。
AttrDict({'items': [{'project': 'fr.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019010100', 'access': 'all-access', 'agent': 'user', 'views': 35}, {'project': 'fr.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019020100', 'access': 'all-access', 'agent': 'user', 'views': 11}]})
AttrDict({'items': [{'project': 'en.wikipedia', 'article': 'Giovanni_Battista_Merano', 'granularity': 'monthly', 'timestamp': '2015070100', 'access': 'all-access', 'agent': 'user', 'views': 35}, {'project': 'en.wikipedia', 'article': 'Giovanni_Battista_Merano', 'granularity': 'monthly', 'timestamp': '2015080100', 'access': 'all-access', 'agent': 'user', 'views': 35}]})我要做的是通过选择性地构建行来解析数据。如果有人能帮我弄清楚如何从这些数据(例如)中获得文章、时间戳和视图的所有数据点,我认为我将是最棒的。我甚至可以肯定,如果这个东西是JSON还是Python (print(type()返回"class 'attrdict.dictionary.AttrDict'“。任何帮助都将不胜感激。谢谢!**
发布于 2019-12-16 02:53:58
我猜您是在使用JSON库的load()(或load())函数吧?
load()/loads()都将JavaScript对象转换为JavaScript中的嵌套字典。这就是为什么印刷这么乱。
我并不完全理解您的问题是什么,但是您应该能够通过将load()/loads()作为一个字典来与它进行交互。这里有一个指向JSON库文档的链接(我猜您已经看到了)[1]
如果你有什么问题请告诉我!
发布于 2019-12-16 20:59:48
所以在我看来,views是一个嵌套的字典。该类型表示AttrDict,虽然我不知道这是什么,但我猜它的接口类似于Python的内置字典。如果您使用views["items"],应该会给出一个字典列表,这些字典都是{'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019110100', 'access': 'all-access', 'agent': 'user', 'views': 330}的通用形式。如果你对如何解释感到困惑,请看我对另一个答案的评论。现在,您将注意到这个列表中的许多字典中的每一个都有一个'views'键和一个'timestamp'键。你必须决定你想要哪个映射值(即你想要哪本字典)--我不知道你感兴趣的是哪一本。如果需要所有这些字段,那么迭代这个列表,对于每个元素,i使用i["views"]和i["timestamp"]访问这些字段。这有用吗?
发布于 2019-12-17 21:05:30
谢谢你的建议!
我决定尝试一些不同的东西,直接去维基百科Rest。
贝娄是我使用的代码:
import requests
from csv import reader
opened_file = open("file to read")
read_file = reader(opened_file)
unique_pages = list(read_file)
write_file = open("file to write results", "w")
for row in unique_pages:
#first load in variables from file
lang = row[0]
page_title = row[1]
url = row[2]
ulan_id = row[3]
ulan_name = row[4]
wsearch = row[0]+'.wikipedia'
#next build URL
pvurl = 'https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/'+lang+'.wikipedia/all-access/user/'+page_title+'/monthly/20150701/20191201?'
#next make request
response = requests.get(pvurl)
response_json = response.json()
#finally print results
try:
for i in response_json['items']:
_pvarticle = i['article']
_pvproject = i['project']
_pvtimestamp = i['timestamp']
_views = i['views']
print(_pvarticle,'|',_pvproject,'|',_pvtimestamp,'|',_views,'|',ulan_id,'|',ulan_name,'|',url,'|',lang)
built_string = f"{_pvarticle}|{_pvproject}|{_pvtimestamp}|{_views}|{ulan_id}|{ulan_name}|{url}\n"
write_file.write(built_string)
# time.sleep(0.005)
except:
print(page_title,'|',lang+".wikipedia",'|','No Data','|','No Views','|',ulan_id,'|',ulan_name,'|',url,'|',lang)
built_string = f"{page_title}|{lang}.wikipedia|No Data|No Data|{ulan_id}|{ulan_name}|{url}\n"
write_file.write(built_string)所以我只是在学Python。如果有人有改进代码的建议,请告诉我!
https://stackoverflow.com/questions/59349931
复制相似问题