话不多说,先上代码
import openpyxl
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
# 定义查询快递方法
def getKuaiDi(num):
print("模拟打开浏览器")
resulttest = ''
# 加启动配置,静默模式,不展示浏览器
option = webdriver.ChromeOptions()
option.add_argument('headless')
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_argument('--disable-blink-features=AutomationControlled')
# 打开chrome浏览器
browser = webdriver.Chrome(chrome_options=option)
# browser = webdriver.Chrome()
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
{"source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"})
# 请求打开网页
browser.get("https://www.guoguo-app.com/")
# 清理要搜索的关键词
browser.find_element(By.ID, 'J_SearchInput').clear()
# 请求要搜索的关键词
browser.find_element(By.ID, 'J_SearchInput').send_keys(num)
try:
print('进入方式一:验证码弹窗>查询')
checkEl = browser.find_element(By.LINK_TEXT, "关闭")
checkEl.click()
time.sleep(5)
el = browser.find_element(By.ID, "J_SearchBtn")
el.click()
time.sleep(3)
try:
# 读取不到,就是有登陆限制
print('进入方式一:验证码弹窗>查询>正常返回查询结果')
el2 = browser.find_element(By.ID, 'J_PackageDetail')
resulttest = el2.text
except:
print('进入方式一:验证码弹窗>查询>弹出登陆窗口>无法取得结果')
resulttest = "登陆"
except:
print('进入方式二:直接查询')
el = browser.find_element(By.ID, "J_SearchBtn")
el.click()
time.sleep(3)
try:
print('进入方式二,直接查询>弹出验证窗口')
checkEl = browser.find_element(By.LINK_TEXT, "关闭")
checkEl.click()
time.sleep(3)
# 关闭验证窗口后,重新查询
el = browser.find_element(By.ID, "J_SearchBtn")
el.click()
time.sleep(3)
except:
print('进入方式二,直接查询>没有弹窗,直接返回结果')
# 取得查询结果
el2 = browser.find_element(By.ID, 'J_PackageDetail')
resulttest = el2.text
# 打印查询结果
print('输出结果:'+resulttest)
# 关闭浏览器
browser.quit()
return resulttest
# path = r"E:\python"
# os.chdir(path) # 修改工作路径
# 返回一个workbook数据类型的值
workbook = openpyxl.load_workbook('快递查询.xlsx')
sheet = workbook.active # 获取活动表
# 取第一列,快递单号
columnArr = sheet['A']
for index, j in enumerate(columnArr):
# 第一行,标题,过滤不查
if index == 0:
continue
if j.value is None:
print("当前快递单号为空,请注意检查,行" + str(index))
continue
# 打印快递号
print("当前快递单号:"+j.value)
# 调用查询快递方法
kdv = getKuaiDi(j.value)
# 如果查询已要求登陆,则直接结束后面的查询
if kdv == "登陆":
break
# 把查询结果,保存至第二列
sheet.cell(row=index+1, column=2, value=kdv)
print('----------查询结束-----------')
# 输出文件,另存为
workbook.save('查询结果.xlsx')
利用python调起浏览器 在菜鸟裹裹网站 查询快递信息
一.读取《快递查询.xlsx》里的单号,循环调用快递查询
二.查询的结果,另存EXCEL文件输出