selenium 爬虫 拦截 ajax js 动作

本文介绍了一种利用Selenium WebDriver实现网页自动化的方法,包括输入密码、执行JavaScript脚本修改getJSON行为并监听返回数据的过程。通过WebDriverWait结合自定义函数等待特定条件满足来确保数据正确获取。

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

driver.findElement(By.id("p_pwd")).sendKeys(br.readLine());
		((RemoteWebDriver) driver).executeScript(
				"window.getJSON=$.getJSON;$.getJSON=function(){ var funObj=arguments[2]; var myFun=function(data){  window.myData=data;  funObj(data); } ; window.getJSON(arguments[0],arguments[1],myFun) }");
		driver.findElement(By.id("submit_bt")).click();
		try {
			WebDriverWait wait = new WebDriverWait(driver, 1);
			@SuppressWarnings("unchecked")
			Map<String, ?> data = (Map<String, ?>)wait.until(new Function<WebDriver, Object>() {
				public Object apply(@Nullable WebDriver driver) {
					return  ((RemoteWebDriver) driver)
							.executeScript("return window.myData;");
				}
			});
			if(!"0".equals(data.get("code"))){
				System.out.println("error");
				return;
			}else{
				System.out.println("success");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
使用selenium拦截异步请求可以通过以下步骤实现: 1. 首先,导入selenium库和相关模块: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC ``` 2. 创建一个WebDriver实例,比如使用Chrome浏览器: ```python driver = webdriver.Chrome() ``` 3. 打开目标网页: ```python driver.get('http://www.example.com') ``` 4. 使用WebDriverWait等待异步请求完成: ```python wait = WebDriverWait(driver, 10) # 设置等待时间为10秒 element = wait.until(EC.presence_of_element_located((By.ID, 'element_id'))) ``` 5. 拦截异步请求: ```python requests = driver.requests # 获取所有的请求 for request in requests: if request.response: print(request.url, request.response.status_code) ``` 在上述代码中,我们使用WebDriverWait来等待页面加载完成,然后使用driver.requests获取所有的请求,遍历请求列表并判断是否有响应,如果有响应则打印请求的URL和响应的状态码。 请注意,以上代码仅为示例,具体的拦截异步请求的实现可能因网页结构和异步请求的方式而有所不同。具体的实现方法可能需要根据实际情况进行调整。\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [Python爬虫第二课 Selenium介绍和反爬技术](https://blog.youkuaiyun.com/fegus/article/details/124447201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MVC – 14.ajax异步请求](https://blog.youkuaiyun.com/weixin_30974667/article/details/119524939)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值