简单爬虫2 2020-04-20

网络图片的爬取和存储




如果一个链接是以 .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代码来向服务器提交

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 10,216评论 0 11
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,938评论 0 5
  • 高阶函数:将函数作为参数 sortted()它还可以接收一个key函数来实现自定义的排序,reversec参数可反...
    royal_47a2阅读 3,980评论 0 0
  • 自言自语:(最近想买一直比较忙,都很少有时间写点东西和大家分享,要坚持写点东西啊!) iOS10以后增加了权限的管...
    xiao小马哥阅读 8,207评论 1 1
  • 我最亲爱的,我知道你多爱我。 我也小心翼翼,珍惜这份美好的爱。 我也小心翼翼,好怕打破这份美好。 当我在思念里煎熬...
    w5726阅读 2,507评论 0 0