Python+selenium+360浏览器实现自动测试

本文介绍了如何使用Selenium驱动360浏览器模拟低版本IE来爬取特定系统数据,包括设置浏览器路径、JS赋值、XPath定位、iframe切换、日期选择及验证码识别等关键步骤,为后续的爬虫开发提供了参考。

最近,因工作需要爬取一个系统的数据。该系统只能用低版本IE浏览器,所以尝试了用360浏览器,考虑能够让更多人扩展该爬虫,选取selenium驱动浏览器。现在把需要用到的主要技术点整理如下,备以后查询。

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

1.selenium打开浏览器,注意设置浏览器的启动路径

options = webdriver.ChromeOptions()
options.binary_location = r"C:\Users\83371\AppData\Roaming\360se6\Application\360se.exe"

#设置chromedriver的启动位置
service = Service(r’D:\Python\Python37\chromedriver.exe’)
drive = webdriver.Chrome(service=service,options=options)
drive.get(‘http://12.12.12.12:80/apm/’)

2.js给textBox赋值

js = “var obj = document.getElementsByName(‘userName’)[0];obj.value=‘cc’;”
drive.execute_script(js)
js = “var obj = document.getElementsByName(‘passWord’)[0];obj.value=‘cc’;”
drive.execute_script(js)

5.xpath定位,send_keys赋值textBox

drive.find_element(by=By.XPATH,value=“//[@name=‘userName’]“).send_keys(“cc”)
drive.find_element(by=By.XPATH,value=”//
[@name=‘passWord’]”).send_keys(“cc”)
drive.find_element(by=By.XPATH,value=“//*[@class=‘sureButton’]”).click()

6.xpath定位,根据text确定菜单位置,点击菜单

elements=drive.find_elements(by=By.XPATH,value=“//[@class=‘nav-label’]“)
for el in elements:
if el.text==‘立项管理’:
el.click() #需要把下级菜单展示出来
break
drive.find_element(by=By.XPATH,value=”//
[@href=‘app/list’]”).click()

7.xpath定位,切换iframe

drive.switch_to.frame(drive.find_element(by=By.XPATH,value=“//iframe[contains(@src,‘app/list’)]”))

8.js定位,赋值select

js = “var obj = document.getElementsByName(‘pt_category’)[0];obj[1].selected = true;”
drive.execute_script(js)

9.js定位,赋值datepicker

js = “var obj = document.getElementsByName(‘pt_start’)[0];obj.value = ‘2022-03-21’;”
drive.execute_script(js)

drive.find_element(by=By.XPATH,value=‘//*[@name=“pt_start”]’).send_keys(‘2022-03-21’)

101.验证码识别

import ddddocr as ddddocr
ocr = ddddocr.DdddOcr()
with open(‘aa.jpg’, ‘rb’) as f:
img_bytes = f.read()
res = ocr.classification(img_bytes)
print(res)

### 使用 PythonSelenium 爬取智联招聘网站上的职位详情 为了实现这一目标,需要完成几个关键步骤: #### 安装必要的库 确保安装了所需的Python库,包括`selenium`以及其他可能用到的数据处理工具。可以通过pip命令来安装这些依赖项[^2]。 ```bash pip install selenium pymysql matplotlib numpy ``` #### 设置 WebDriver Selenium 需要通过 WebDriver 来控制浏览器操作。对于 Chrome 浏览器来说,可以下载对应的 chromedriver 并设置环境变量或者直接指定路径给 `webdriver.Chrome()` 方法调用[^1]。 ```python from selenium import webdriver driver_path = '/path/to/chromedriver' # 替换成实际chromedriver位置 options = webdriver.ChromeOptions() browser = webdriver.Chrome(executable_path=driver_path, options=options) ``` #### 访问目标网页并定位元素 打开智联招聘首页或者其他含有招聘信息的具体页面链接,之后利用XPath、CSS Selector 或者 class name 等方式找到包含工作描述的HTML节点集合[^3]。 ```python url = "https://www.zhaopin.com/" # 示例URL,请替换为具体搜索结果页地址 browser.get(url) # 假设每条工作的需求部分都包裹在一个具有特定类名(job_demand)下的标签内 elements = browser.find_elements_by_class_name("job_demand") for element in elements[:5]: # 只打印前五个作为例子 print(element.text.strip()) ``` > **注意**: 实际开发过程中应当更加严谨地分析页面结构,并考虑异常情况处理逻辑;另外由于反爬机制的存在,在频繁请求时可能会遇到验证码等问题,需提前做好应对措施。 #### 数据存储与可视化展示 (可选) 如果希望进一步加工所抓取的信息,则可以将其存入数据库以便后续查询统计,亦或是绘制图表直观呈现某些特征分布状况[^4]。 ```python import pymysql import numpy as np import matplotlib.pyplot as plt def save_to_db(data_list): conn = pymysql.connect(host='localhost', user='root', password='', db='') cursor = conn.cursor() sql = """INSERT INTO jobs_info(title, salary, company) VALUES (%s,%s,%s);""" try: for item in data_list: cursor.execute(sql, tuple(item)) conn.commit() except Exception as e: print(f"Error occurred while saving to DB: {e}") conn.rollback() finally: cursor.close() conn.close() def visualize_salary_distribution(salary_data): sorted_salaries = sorted([float(i.replace('k',''))*1000 if 'k' in i else float(i)*1000 for i in salary_data]) avg_salary = sum(sorted_salaries)/len(sorted_salaries) x_values = list(range(len(sorted_salaries))) fig, ax = plt.subplots(figsize=(8,6)) ax.plot(x_values,[avg_salary]*len(sorted_salaries),label="Average Salary",color="#FF7F50") ax.scatter(x_values,sorted_salaries,label="Individual Salaries") ax.set_title('Salary Distribution') ax.legend(loc='upper left') plt.show() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值