网站API数据和CSV文件

首先要先道歉,爬虫部分无限期押后,

现在的精力主要放在写教材上。录基础部分视频时怎么方便怎么来,没考虑到国内的朋友要翻墙才能访问某些国外的网站,这段时间通过看网友的留言更有了把一些实例墙内化的想法。

录这套视频的初衷是觉得python对提高效率很有帮助,希望更多的人了解这个工具。现在有机会写本基础教程既可以修正一些错误、改进教学内容又多一个传播途径,所以就把手头的工作都停下来,专心想赶快把教材写完好继续前行。

我能量值特别低,又胸(爱)怀(看)天(八)下(卦),所以进度跟蜗牛与黄鹂鸟里那只蜗牛爬树的速度差不多。

再一个是代码,等网站建好后主要代码会贴到网站上,网站在建中...

建网站的koala同学主业不仅不是这个,还挺繁重......

对于建网站他是现学现卖,一边学一边建,目前好像被一个问题给卡住了~~~Too bad!!!

他建网站那玩意我一窍不通,所以一点忙帮不上。等他把网站搞定了,我就把如何建网站这门手艺“偷”学过来,然后教给你们哈,比较适合小门小户请不起专业网站制作公司......完了还想建网站的银

我正在写教程的JSON这章,觉得这个把域名转成IP地址,再定位IP地址是哪个城市的的代码很有用。用的是高德API,要自己去高德网站上申请APP Key,过程不麻烦,注册个账号就行了。

把要查询的域名放进一个txt文件,文件内容长这样:

微博: weibo.com

微信: wechat.com

淘宝: taobao.com

B站: bilibili.com

网易: 163.com

知乎:      zhihu.com

高德: amap.com

 

Python代码如下:

import requests    # 向网站提取数据用
import socket     # 域名转IP地址用
import json          # 解析JSON数据用

h = open('/Users/PythonABC/documents/nameL.txt', 'r')
# 打开存有网址的txt文件,替换成你自己的路径和文件名
appID = '12345'
# 用你自己在高德网站申请的App Key替换掉12345
url = 'https://restapi.amap.com/v3/ip?'
# 基础字串,高德网站上给开发者看的技术文档上有

recordList = h.readlines()  
# 以列表形式存储每条记录
for record in recordList:  # 依次提取每条记录
   name, domain = record.split()
   # 网站名和域名分别提取到变量里
   ip = socket.gethostbyname(domain)
   # 域名转成IP地址,注意这里的域名参数domain接收的域名
   # 前面不能有http://,如果有用domain=domain[7:]处理下
   urlIP = url+'ip=' + ip + '&output=json&key=' + appID
   # 按照指定格式把参数跟基本字串连接起来
   response = requests.get(urlIP)  
   # 向高德提请数据
   jsonData = json.loads(response.text)  
   # 解析json
   city = jsonData.get('city')
   print('{}\n域名:{:15}IP地址:{:20}所在城市:{}\n'.format(name, domain, ip, city))
高德只能定位国内的IP地址,如果定位国外的可以用ipstack的API:

import requests
import socket
import json

h = open('/Users/PythonABC/documents/nameL.txt', 'r')  appID = '12345'
url = 'http://api.ipstack.com/'
recordList = h.readlines() 
for record in recordList: 
   name, domain = record.split()
   ip = socket.gethostbyname(domain)
   urlIP = url + ip + '?access_key=' + appID
   response = requests.get(urlIP) 
   jsonData = json.loads(response.text) 
   city = jsonData.get('city')
   country = jsonData.get('country_name')
   print('{}\n域名:{:15}IP地址:{:20}所在国家:{:15}所在城市:{}\n'.format(name, domain, ip, country, city))
上面有个域名两个网站查出来的城市竟然不一样,不知道哪个正确