最近,各平台更新的ip属地功能非常火爆,因此呢,也出现了许多新的网络用语,比如说“xx加几分”,“xx扣大分”等等,非常的有趣啊
可是呢,最近一个小伙伴和我说,“仙草哥哥,我也想查看一下自己的ip地址,可是我不会啊,我应该怎么样才能查看到自己的ip地址呢?”
关于如何查看自己的ip地址,有兴趣的话可以查看一下我的这篇文章,当然这次呢,我会换一个复古的方式,使用mechanize进行爬取
python中的mechanize算是一个比较古老的库了,在python2的时代中,使用的多一些,在python3以后就很少使用了,现在已经是2202年了,可能很多人都没听说过mechanize,这不要紧,我们先来简单的讲解一下,如何使用mechanize
其实,mechanize的使用方法,和内置的urllib使用方法非常的相似,也就是说,只要你学会了如何使用urllib,那么就能够顺利的使用mechanize
首先,我们需要导入mechanize,并且创建一个Browser
import mechanize browser = mechanize.Browser()
然后通过open方法,直接打开一个网址,这个和urllib中的设想都是一样的,也就说,像打开本机文件那样,轻松的打开一个远程的文件
file = br.open(url)
然后,我们需要通过read()方法,读取这个文件中的内容
content = file.read()
但是需要注意的是,和以二进制的方法打开一个文件相似,通过read()读取得到的内容,是二进制的形式,必须要通过decode()方法,进行解码
html = content.decode()
当然,这个时候可能有的小伙伴要问了,默认的user-agent是什么样的呢?如何修改user-agent呢?其实使用mechanize的时候,设置user-agent并不困难,只需要通过addheaders就可以了
brower.addheaders = [("user-agent", "Mozilla/5.0")]
另外,别忘记了要设置是否遵守robots.txt协议,通过set_handle_robots()完成这项设置
brower.set_handle_robots(False)
这样,我们的基本操作就已经完成了,可以实际使用一下了
比如说,我们通过mechanize发起一个请求
import mechanize import json from base64 import b64decode br = mechanize.Browser() url = b64decode("aHR0cDovL2h0dHBiaW4ub3JnL2dldA==").decode() r = br.open(url).read().decode() r = json.loads(r) print("当前请求头:", r["headers"]["User-Agent"])
从这里,我们可以看出,使用mechanize发起请求的时候,默认的请求头就是urllib,也就是说,这段代码实际上相当于
import json from urllib.request import urlopen from base64 import b64decode url = b64decode("aHR0cDovL2h0dHBiaW4ub3JnL2dldA==").decode() r = urlopen(url).read().decode() r = json.loads(r) print("当前请求头:", r["headers"]["User-Agent"])
那么,下面就是完整的通过mechanize查询本机ip地址的方法
import mechanize import json from base64 import b64decode br = mechanize.Browser() br.addheaders = [("user-agent", "Mozilla/5.0")] br.set_handle_robots(False) url = b64decode("aHR0cDovL2h0dHBiaW4ub3JnL2dldA==").decode() r = br.open(url).read().decode() r = json.loads(r) print("当前请求头:", r["headers"]["User-Agent"]) print("当前ip地址:", r["origin"])
这个时候,可能有的小伙伴非常的困惑,查询本机ip地址,那我不是直接通过百度搜索,搜索ip就行了吗,为什么还需要自己写程序呢?
嗯。。。好吧,我觉得你说的也很对,但是,你不觉得尝试一下mechanize的使用超级酷嘛?