python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python爬虫ip地址

通过python爬虫mechanize库爬取本机ip地址的方法

作者:仙草哥哥

python中的mechanize算是一个比较古老的库了,在python2的时代中,使用的多一些,在python3以后就很少使用了,现在已经是2202年了,可能很多人都没听说过mechanize,这不要紧,我们先来简单的讲解一下,如何使用mechanize,感兴趣的朋友一起看看吧

需求分析

最近,各平台更新的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的使用超级酷嘛?

到此这篇关于通过python爬虫mechanize库爬取本机的ip地址的文章就介绍到这了,更多相关python爬虫ip地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文