Not logged in
Talk
Contributions
Create account
Log in
Navigation
Main page
About
People
Publications
Teaching
Resources
Research Blog
Wiki Functions
Recent changes
Help
Licensing
Page
Discussion
Edit
View history
Editing
DS4UX (Spring 2016)/Panama Papers
(section)
From CommunityData
Jump to:
navigation
,
search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== Building queries with Python <code>requests</code> === Now that we're comfortable building API queries in the sandbox, we will focus on how we can access these APIs with Python. If you would like to review the steps involved in building an API query in Python, check out the resources listed below. * [https://github.com/makoshark/wikipedia-cdsw/blob/master/building-a-query.md Querying APIs from Python] a written lecture by Ben Lewis that walks you step-by-step through the process of building and executing an API query in Python. The 'companion script' <code>building_a_query_code.py</code> in the project directory executes all of the code shown in this lecture step-by-step. If you want to just execute some of the code in the lecture, comment out all the stuff below the blocks of code you want to execute it before you run the script. * <code>wikipedia-1.py</code> — This is the script you were asked to execute to 'test' your code when you downloaded the project. It's also a valid API request that gathers metadata about the first revision to Panama Papers, and prints it to your terminal. The JSON that this query returns can be seen here: https://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Panama_Papers&rvdir=newer&rvlimit=1&format=jsonfm * <code>introduce_while.py</code> — (in project directory) this script uses a while loop to roll two 'virtual dice' until they both come up 6's. This example doesn't make API calls or use Wikipedia data—the point is to help you understand that sometimes you will need to loop through an operation (like an API request) an indeterminate number of times. In these situations, a 'while' loop is more appropriate than a 'for' loop. * <code>introduce_continue.py</code> — (in project directory) this script shows you two ways to use the value of the 'continue' key that is embedded inside the JSON returned by your API request. Each API request returns a chunk of data, but there may be more data available! By passing the value of 'continue' back in subsequent requests, you can pick up where the last request left off. ;1. How many edits did Panama Papers receive in its first 24 hours? Completing this exercise requires you to first query the Wikipedia API to get revisions to the article that have a timestamp between 2016/4/3 17:59:05 and 2016/4/4 17:59:05, and then use Python to count the number of revisions in the resulting JSON. ;2. How many edits has Panama Papers receive from mobile devices since it was created? Completing this exercise requires you to perform two queries with the Wikipedia pageview API, because there are ''two'' types of mobile device counts—<code>mobile-app</code> and <code>mobile-web</code>—and you can only query them one at a time. ;3. How many times was Panama Papers viewed in the first week? What proportion of those views came from mobile devices? Completing this exercise also requires two API requests: one to gather pageview data for ALL devices, and then performing a request that only gathers data about devices that viewed the page using the [https://en.m.wikipedia.org/wiki/Main_Page Wikipedia mobile website]. ;4. How many other articles has [https://en.wikipedia.org/wiki/User_talk:Czar User:Czar] edited on Wikipedia since they created Panama Papers? * [https://www.mediawiki.org/wiki/API:Usercontribs View documentation for API:Usercontribs] * [https://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&format=json&prop=&list=usercontribs&titles=&uclimit=500&ucstart=2016-04-04T17%3A59%3A00.000Z&ucend=2016-05-01T00%3A22%3A24.000Z&ucuser=Czar&ucdir=newer&ucnamespace=0&ucprop=ids%7Ctitle%7Ctimestamp%7Ccomment%7Csize View example query in API sandbox] The sample query above returns a list of edits by Czar between 4/03 and 5/01, that includes the ''title'' of each article that was edited. How would you iterate over this JSON data in Python to come up with a list that contained the title of every article Czar edited, with no duplicates? <br/>
Summary:
Please note that all contributions to CommunityData are considered to be released under the Attribution-Share Alike 3.0 Unported (see
CommunityData:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:
Cancel
Editing help
(opens in new window)
Tools
What links here
Related changes
Special pages
Page information