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定位读取后,将数据再输出文件。
posted on 2021-06-13 16:15  始终不够啊  阅读(1956)  评论(0编辑  收藏  举报