By Terrill Yang (Github: https://github.com/yttty)
在这一章,我们将尝试使用一些API来完成抓取,首先看一个查看IP地理信息的例子
In [12]:
    
import json
from urllib.request import urlopen
def getCountry(ipAddress):
    response = urlopen("http://freegeoip.net/json/"+ipAddress).read().decode('utf-8')
    responseJson = json.loads(response)
    return responseJson.get("country_code")
    
http://freegeoip.net 这个网站根据你的IP返回对应的地址,如果将IP作为参数传入,那么将返回该IP对应的地址,如下所示
In [13]:
    
print(getCountry("50.78.253.58"))
    
    
In [14]:
    
print(getCountry(""))
    
    
In [21]:
    
import json
jsonString = '{"arrayOfNums":[{"number":0},{"number":1},{"number":2}],"arrayOfFruits":[{"fruit":"apple"},{"fruit":"banana"},{"fruit":"pear"}]}'
jsonObj = json.loads(jsonString)
    
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。( 来自百度百科 )
将上面的jsonString对齐格式,可以看到他其实是长这个样子的:
{
    "arrayOfNums": [
        {
            "number": 0
        }, 
        {
            "number": 1
        }, 
        {
            "number": 2
        }
    ], 
    "arrayOfFruits": [
        {
            "fruit": "apple"
        }, 
        {
            "fruit": "banana"
        }, 
        {
            "fruit": "pear"
        }
    ]
}
其中[]框住的是数组,而{}框住的是对象(object), 下面我们尝试对这个jsonObj进行操作
In [22]:
    
print(jsonObj.get("arrayOfNums"))
    
    
In [23]:
    
print(jsonObj.get("arrayOfNums")[1])
    
    
In [24]:
    
print(jsonObj.get("arrayOfNums")[1].get("number")+jsonObj.get("arrayOfNums")[2].get("number"))
    
    
In [25]:
    
print(jsonObj.get("arrayOfFruits")[2].get("fruit"))
    
    
In [ ]: