Python模拟网页点击
GPS这类系统,需要鼠标点击列表中的元素完成向地图服务器发送请求,然后接受反馈的信息,然后在页面弹出一个窗口显示位置信息。
首先需要完成第一步,打开浏览器,输入账号密码,点击登录,之后再是找到列表并点击列表中的元素。
爬虫准备:
安装selenium : :cmd安装 pip install selenium
下载chromedriver ,下载后将chromedriver.exe文件放至 python.exe所在目录:
http://chromedriver.storage.googleapis.com/index.html下载
(根据你的google浏览器版本下载对应的chromedriver 版本)
打开登录页面
右键审查元素,点击右上角小箭头,鼠标指向需要填写账号的位置,点击,右边elements中会直接找到对应的网页代码位置
这里有id=””,我们可以用名称查找username的位置
elem = driver.find_element_by_name(“username”)
填入账号
elem.send_keys(“XXXX”)
填写密码同理
然后在找登录按钮代码时,发现没有id=””
这是可以Copy full Xpath找到按钮的定位通过下命令确定按钮位置
elem = driver.find_element_by_xpath(“”)
Copy下来位置代码为/html/body/div/div[2]/div/form/div/input,直接填入命令中即可
登录进去后,确定列表中元素的位置要和上述操作有点区别
右上方箭头点击列表区域时,注意右方出现的列表名称
需要进入iframe状态不然无法操作下面的元素
driver.switch_to.frame(“mainFrame”)
Copy full Xpath其中第一个元素得到代码
/html/body/div/div[2]/div/table/tbody/tr[2]/td[1]
在填写的时候改为,注意contentTable为网页中列表的名称,tr[2]/td[1]则是列表中元素中的位置
driver.find_element_by_xpath(“//table[@id=\’contentTable\’]//tr[2]/td[1]”)
from selenium import webdriver import time opt = webdriver.ChromeOptions() #创建浏览 # opt.set_headless() #无窗口模式 driver = webdriver.Chrome(options=opt) #创建浏览器对象 driver.get(\'网页\') #打开网页 # driver.maximize_window() #最大化窗口 time.sleep(1) #加载等待 # 填入账号 elem = driver.find_element_by_name("username") # 清空原有内容 elem.clear() # 填入账号 elem.send_keys("账号") time.sleep(1) #加载等待 # 填入密码 elem = driver.find_element_by_name("password") # 清空原有内容 elem.clear() # 填入密码 elem.send_keys("密码") time.sleep(1) #加载等待 # 得到 登录按钮并单击 elem = driver.find_element_by_xpath("/html/body/div/div[2]/div/form/div/input").click() time.sleep(2) #加载等待 driver.switch_to.frame("mainFrame") #进入iframe不然无法操作下面的元素 time.sleep(2) #加载等待 driver.find_element_by_xpath("//table[@id=\'contentTable\']//tr[2]/td[1]").click() #点击列表中的元素 /html/body/div/div[2]/div/table/tbody/tr[2]
View Code
time.sleep(2)可以设置加载等待时间,等待请求返回数据然后可以写入读取element网页数据代码,并提取出当前点击元素返回的信息,通过写入循环,将所有车辆GPS定位读取后,将数据再输出文件。