基于Selenium的傻瓜自动化提取文字信息
Posted 小乖乖的臭坏坏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Selenium的傻瓜自动化提取文字信息相关的知识,希望对你有一定的参考价值。
今天,韩老师有一个比较机械性的工作向我求助,于是我写了一份脚本为她自动化的实现手动执行的功能。
功能说明
需要键入500+个汽车的信息查询获得汽车车型
流程说明
- 从csv文件中获取所有汽车VIN码的数据
- 将车牌信息输入等待响应,可能出现3种结果:
1) 页面重新刷新,则说明查不到该车型,返回NAN;
2) 页面中该内容为空,返回NAN;
3) 找到车型信息,返回该信息。 - 返回值
代码&说明
使用selenium库来模拟向浏览器发送指令并操作。
import csv
from selenium import webdriver
import warnings
import time
import selenium
#数据预处理
def read_csv(filename):
csv_reader = csv.reader(open(filename))#读取文件
datas = []#['a', 'b',...]
for row in csv_reader:
datas.append(row)
return datas
#网页处理
def process_web(source_web, data):
#异常处理
with warnings.catch_warnings(): # 忽视Warning
warnings.simplefilter("ignore")
warnings.warn("deprecated", DeprecationWarning)
#固定的语法,复制就可以了,
browser = webdriver.Edge(
executable_path="D:\\\\Program Files\\\\Python38\\\\Lib\\\\site-packages\\\\selenium\\\\msedgedriver.exe") # 声明浏览器对象
browser.get(source_web)# 1.进入网页
#点击fn+f12,进入浏览器的开发者模式,通过小箭头点一下想要查找到元素,定位源代码位置
browser.find_element_by_xpath('//*[@id="vin"]').send_keys(data)#输入值
browser.find_element_by_xpath('//*[@id="login-button"]').click()#点击查询按键
time.sleep(10)#担心网页刷不出来,导致查询失败
try:# try里是正常的业务逻辑
#很多的id,可能有一个,又可能不止
datas = browser.find_element_by_id('VehicleInfoLinkageModel_InfoShow') \\
.find_element_by_id('modelShowConentArea') \\
.find_elements_by_class_name('row')
id = datas[0].get_attribute("id")#找到了id,用于拼接xpath
xpath = '//*[@id="' + id + '"]/div[1]/table/tbody/tr[3]/td[2]'
return_data = browser.find_element_by_xpath(xpath).text # 获取车型的文本
return return_data
except selenium.common.exceptions.NoSuchElementException:
return 'NaN'
except IndexError:
return 'NaN'
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
filename = "D:\\\\..韩雯宝贝\\\\车型号.csv"
csv_data = read_csv(filename)# 把csv文件里的数据,存到我们的csv_data变量(列表)里
source_web = "http://cloud.dat881.com/embed/front/queryVINPage.jsp?levelSessionId=hhhyje375b5b42a7015b5b57eb2145960"
for data in csv_data:
print_data = process_web(source_web, data)#不管数据对不对,对的打印出来,不对的打印NaN
print(print_data)
最终打印的结果
以上是关于基于Selenium的傻瓜自动化提取文字信息的主要内容,如果未能解决你的问题,请参考以下文章
selenium自动化实战-基于python语言(三: 编写脚本)