网络图片的爬取和存储
如果一个链接是以 .jpg 结尾的,那么它是一个图片,而且它是一个文件
保存图片时,我们需要知道图片所保存的位置,先设置一个路径 path
假设图片保存为abc.jpg这个名字,但这个名字后期我们会做相关的处理
下面给出我们查到的网络图片的地址
再用get请求捕获这个 url
返回状态码 200 ,说明这个时候 r 已经包含了返回的这个图片
下面就是保存这个图片,图片是二进制的格式,我们通过 with open(path, 'wb') as f:
f.write(r.content)
把二进制的格式保存为文件
这段代码的含义就是,我们打开了一个文件,这个文件就是我们要存储的abc.jpg
并且把它定义为一个文件标识符 f
然后我们将返回的内容写到这个文件中
respons对象返回的内容中r.content表示的是返回内容的二进制形式
所以我们可以用 f.write(r.content) 将返回二进制形式写到文件中
最后我们将文件关闭
然后去d盘看abc.jpg这个文件是不是网上这个图片
那么能不能用图片原来的名字获取图片呢
只需要将url中图片原本的名字最后的图片文件的名字截取下来,作为我们本地目录的名字就可以了
这里面我们除了import requests库之外,,还需要import os 库
这里面我们给出 url 链接,再定义一个根目录 root, 我们把根目录定义为D盘的pics目录
然后我们把文件的路径标识为这个根目录 root 加上我们 url 链接的以反斜杠分割的最后一部分,
其实这部分就是最后的 jpg 文件
这样我们的 path 变量包含的就是本地路径中的一个文件名称,而这个文件名称与网络文件名的最后一部分是相同的
接下来我们以 try 和 except 为框架来获取网络代码
首先我们用一个 if 来判断我们的这个根目录是否存在,如果不存在,我们要先建立这个目录
再判断这个文件存不存在,如果文件不存在,我们通过requests get方式从网上获取相关文件
代码的可靠性和稳定性非常重要,所以即使在写简单的代码,也都要考虑它可能出现的问题,并能够对问题进行处理
视频,flash,动画等等也可以通过这种方法下载,原理相同,稍作改变即可
IP地址归属地的自动查询
如何查询一个IP地址是来自于北京还是上海还是美国呢
我们需要找一个库
他是通过ip138网站提交IP地址的一个url链接的接口形式
以http开头的一个链接通过 ip = ipadress 这样的形式将ipadress作为参数提交到前面的网页中,
这个网页根据这个参数会返回一个数据内容,就是这个地址对应的所在的物理位置
我们通过这样的url接口就可以通过提交ip地址来找到ip地址的归属地
我们将刚才解析出来的这个接口用url变量来表示 url = ......
然后我们用requests方法提交一个ip地址
我们再检测一下状态码
200,说明我们的提交的信息被成功的返回了
然后我们再看一下返回文本的相关内容
r.text[-500:] 这里面我们查询的是返回文本的最后500个字节
当返回内容非常多的时候,有时候会导致IDLE的失效,所以我们建议在编写程序然后去检查返回数据的时候,尽量约束一个空间,比如后500个或者前1000个
只要能通过浏览器知道向后台提交的链接形式,那就可以用python代码来向服务器提交