- 使用 www.ip138.com 作为解析对象
- 自动解析ip138.com 中框架的地址
- pyquery的用例
# pip install urllib
# pip install pyquery
import urllib
import urllib.parse
import urllib.request
from pyquery import PyQuery as pq
def get_ip():
# 这里用iphone7 的头
# 不增头信息,访问ip138.com失败
# ip138.com中使用iframe,这里先获得iframe中的src
# 每年iframe中的地址会变,比如 2019.ip138.com 2022.ip138.com
headers = ("User-Agent",
"Mozilla/5.0 (Linux;U;Android 2.3;en-us;Nexus One Build/FRF91)AppleWebKit/999+(KHTML, like Gecko)Version/4.0 Mobile Safari/999.9")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open("http://ip138.com")
doc = pq(data.read())
# 获得 iframe 标签的 src 属性的值
# 获得出来大概是这样 "//2022.ip138.com/"
# 再去掉两头多余的 "/" 就获得到实际的显示地址了
url = "http://" + doc('iframe').eq(0).attr('src').replace('/','')
# print(url)
opener.close()
#获取ip地址
opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url)
doc = pq(data.read().decode('utf8'))
# 取得素有的 <a> 元素
lista = doc('body p a')
# 取得第一个<a> 元素
firsta = lista.eq(0).text()
#print(firsta)
return firsta
万网有一个地址,可以尝试去写个备用结果