JS获取IP地址对应地区、输入监听、字符串的替换

本文介绍如何使用JavaScript结合百度API获取IP地址所在地理位置,并实现文本框输入内容实时验证与替换操作,包括IP定位API调用、文本框输入监听与字符串替换策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、JS根据获取一个IP段中所有IP对应的地址,使用百度API接口
JS代码如下:

<script type="text/javascript">                    
	function showLocation(data) {
		if (data) {
			console.log(data);
			var province=data.content.address_detail.province;//省份
			var city=data.content.address_detail.city;//城市
		} 
	}
</script>
<script type="text/javascript" src="http://api.map.baidu.com/location/ip?ak=你的百度账户的ak&callback=showLocation"></script>

2、文本框的输入监听

function immediately() {
   var element = document.getElementById("code");//获取被监听的文本框
   if ("\v" == "v") {
        element.onpropertychange = webChange;
    } else {
        element.addEventListener("input", webChange, false);
    }
    function webChange() {
        if (element.value) {
            var code = element.value;
            if (code == "123") {
            //输入内容是123时执行的操作
            } else {
            //输入不正确时执行的操作
            }
        };
    }
}
immediately();

      

3、字符串的替换,一组数据的选择和取消,思路是点击一次是添加,再点击一次就是删除,用一个隐藏的input来保存当前的选择结果。
toggle支持两个以及两个以上的函数的循环执行。
$("#sales li")这种方式可以获取id为sales标签下的所有li元素,可以用$(this).index()来获取当前元素是元素组li的第几个。
JS字符串的替换比较麻烦:
re1 = new RegExp(“abc”, “g”);//abc是要被替换掉的内容,g表示全局替换。
sealid = sealid.replace(re1, ‘123’);//123表示新的内容
上面这段的意思就是把sealid字符串里的字符串abc用123来代替。
下面是项目中实例代码:

$("#sales li").toggle(function () {
	//添加选项、选择
	$(this).css("background-color", "#cbcbcb");
	var sealid = $("#hidsealid").val();
	sealid = sealid + (10 - $(this).index()) + ",";
	$("#hidsealid").val(sealid);
	
	var seals = $("#hidseals").val();
	seals = seals + $(this).children("a").html() + ",";
	$("#hidseals").val(seals);
	$("#txtsales").val($("#hidseals").val().substring(0, $("#hidseals").val().lastIndexOf(',')));
	//alert($("#hidsealid").val() + "---" + $("#txtsales").val());
	
	}, function () {
	//删除选项、取消
	$(this).css("background-color", "");
	var sealid = $("#hidsealid").val();
	re1 = new RegExp((10 - $(this).index()) + ",", "g");
	sealid = sealid.replace(re1, '');
	$("#hidsealid").val(sealid);
	
	var seals = $("#hidseals").val();
	re2 = new RegExp($(this).children("a").html() + ",", "g");
	seals = seals.replace(re2, '');
	$("#hidseals").val(seals);
	$("#txtsales").val($("#hidseals").val().substring(0, $("#hidseals").val().lastIndexOf(',')));
	//alert($("#hidsealid").val() + "---" + $("#txtsales").val());
	});

html页面内容如下:

<ul id="sales" class="pop_box_wrap">
    <li><a href="javascript:void(0);">商超</a></li>
    <li><a href="javascript:void(0);">流通</a></li>
    <li><a href="javascript:void(0);">餐饮</a></li>
    <li><a href="javascript:void(0);">酒店</a></li>
    <li><a href="javascript:void(0);">夜场</a></li>
    <li><a href="javascript:void(0);">专卖店</a></li>
    <li><a href="javascript:void(0);">专供</a></li>
    <li><a href="javascript:void(0);">网购</a></li>
    <li><a href="javascript:void(0);">团购</a></li>
    <li><a href="javascript:void(0);">其他</a></li>
</ul>
<input type="text" id="txtsales" class="l-text" name="txtsales" readonly="true" />
<input type="hidden" id="hidsealid" value="" />
<input type="hidden" id="hidseals" value="" />
import subprocess import time import psutil from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC # 配置参数 chrome_path = "C:/Program Files/Google/Chrome/Application/chrome.exe" # Chrome 路径 user_data_dir = "C:/ChromeUserData" # 用户数据目录 debug_port = 9222 # 调试端口 # 启动 Chrome chrome_cmd = [ chrome_path, f"--remote-debugging-port={debug_port}", f"--user-data-dir={user_data_dir}", "--no-first-run", "--no-default-browser-check" ] # 启动 Chrome 进程 chrome_process = subprocess.Popen(chrome_cmd) time.sleep(5) # 等待浏览器启动 # 获取 Chrome 进程 ID chrome_pid = chrome_process.pid # 检查 Chrome 进程状态 def is_chrome_running(pid): """检查 Chrome 进程是否仍在运行""" try: process = psutil.Process(pid) return process.is_running() except psutil.NoSuchProcess: return False # 保存页面数据 def save_current_page(debug_port, save_index): """连接到 Chrome 并保存当前活动的标签页数据""" try: # 配置 Chrome 调试模式 chrome_options = Options() chrome_options.add_experimental_option("debuggerAddress", f"127.0.0.1:{debug_port}") # 连接到 Chrome driver = webdriver.Chrome(options=chrome_options) # 获取当前活动的标签页数据 current_url = driver.current_url page_title = driver.title print(f"当前页面 URL: {current_url}") print(f"页面标题: {page_title}") info = [None]*6 # 查找包含“发生时间”文本的元素 try: #发生时间获取 time_element = driver.find_element(By.XPATH, "//*[contains(text(), '发生时间')]") next_sibling = time_element.find_element(By.XPATH, "following-sibling::*[1]") info[0] = next_sibling.text #源地址获取 #源端口获取 #目的地址获取 #目的端口获取 #攻击类型 except Exception as e: print(f"未找到包含“发生时间”文本的元素或其兄弟元素: {e}") sibling_text = None # 页面截图(保存到内存) screenshot_data = driver.get_screenshot_as_png() print("页面截图已保存到内存。") # 关闭连接 driver.quit() # 返回 sibling_text 和图像数据 return info, screenshot_data except Exception as e: print(f"保存页面数据时出错: {e}") return None, None # 主逻辑 try: save_index = 1 # 保存文件的序号 print("Chrome 已启动,请手动操作浏览器。") print("输入 's' 保存当前活动的标签页数据,输入 'q' 退出程序。") while True: # 检查 Chrome 是否关闭 if not is_chrome_running(chrome_pid): print("Chrome 已关闭,程序退出。") break # 监听用户输入 user_input = input("请输入指令 (s/q): ").lower() if user_input == "s": # 保存页面数据并获取返回结果 info, screenshot_data = save_current_page(debug_port, save_index) if info and screenshot_data: # 保存 sibling_text 到文件 print(info) # 保存截图到文件 screenshot_filename = f"page_screenshot_{save_index}.png" with open(screenshot_filename, "wb") as f: f.write(screenshot_data) print(f"页面截图已保存至 {screenshot_filename}") save_index += 1 # 递增保存文件序号 elif user_input == "q": print("用户选择退出程序。") break else: print("无效指令,请输入 's' 或 'q'。") except KeyboardInterrupt: print("用户手动终止程序。") finally: # 清理资源 if is_chrome_running(chrome_pid): chrome_process.terminate()这是现在的代码,我想用bs4来获取html文本数据,要怎么修改?
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值