python物流领域应用

百度距离查询

import requests
from bs4 import BeautifulSoup
from datetime import datetime
import json
import xlwt
import xlwings as xw
from selenium import webdriver
import time
from selenium.webdriver import Chrome, ChromeOptions
import pandas as pd
import json
from selenium.webdriver.common.by import By
import requests
from bs4 import BeautifulSoup
import datetime
import json
import xlwings as xw
from selenium import webdriver
import time
import pandas as pd
from selenium.webdriver import Chrome, ChromeOptions, ActionChains
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.common.keys import Keys
import csv
import multiprocessing
import os
import numpy as np

def data_a(start, end):
    df = pd.DataFrame()
    distance = []
    # 清空数据
    time.sleep(0.5)
    driver.find_element(By.XPATH,'/html/body/div[2]/div[2]/div/div[1]/div[2]/div[2]/div/div[2]/div[1]/input').clear()
    driver.find_element(By.XPATH,'/html/body/div[2]/div[2]/div/div[1]/div[2]/div[2]/div/div[2]/div[2]/input').clear()
    time.sleep(0.5)
    driver.find_element(By.XPATH,"//div[@class='routebox-input route-start']/input[@class='route-start-input']").send_keys(
        start)
    driver.find_element(By.XPATH,"//div[@class='routebox-input route-end']/input[@class='route-end-input']").send_keys(
        end)
    time.sleep(1)
    driver.find_element(By.XPATH,"//button[@id='search-button']").click()  # 模拟点击
    html = BeautifulSoup(driver.page_source, 'html.parser')
    time.sleep(2)
    source = driver.page_source
    html = BeautifulSoup(source, "html.parser")
    with open('rr.html', 'w', encoding='utf-8') as f:  # 写入网页
        f.write(source)
    time.sleep(1)
    # with open('rr.html', 'r', encoding='utf-8') as f:#打开网页
    #     html_a = BeautifulSoup(f, 'lxml')
    # 获取距离
    html.list = html.find_all('div', attrs={'class': 'navtrans-navlist-title'})
    for i, item in enumerate(html.list):
        try:
            distance.append(item.find_all('span')[2].text.strip('公里'))
            # print(item.find_all('span')[2].text.strip('公里'),)
            df["start"]=start,
            df["end"] = end,
            df["距离"] = (distance[0]),
            # print(df)
        except:
            print(str(i),"网页获取错误")
    return df
#常规检查写入
def write_only():
    df = pd.DataFrame()
    df_a = pd.DataFrame()
    app = xw.App(visible=True, add_book=False)
    wb = app.books.open('distance.xlsx')
    # 创建一个worksheet
    sh = wb.sheets['distance']
    rng_start = [i for i in sh.range("B:B").value if i != None]  # 单元格内容
    rng_end = [i for i in sh.range("C:C").value if i != None]  # 单元格内容
    j = sh.range('a1').expand('table').rows.count  # 序号
    print("行数", j)
    for i in range(len(rng_start) - 1):
        try:
            # for i in range(len(location)):
            # df_a = data_a(location[i], location[i + 1])  # 执行查询
            df_a = data_a(rng_start[i + 1], rng_end[i + 1])  # 执行查询
            df = pd.concat([df_a, df], axis=0)  # 加入基础数据列
            time.sleep(0.5)
            sh.cells[i+1, 3].value = df_a.iloc[0, 2]#写入距离
            sh.cells[i + 1, 4].value = df_a.iloc[0, 0]+'-'+df_a.iloc[0, 1]+'距离'+df_a.iloc[0, 2]#加入备注
            print(df_a)
            # print(df_a.iloc[0, 2])
        except:
            print('查询错误')
            sh.cells[i + 1, 3].value = df_a.iloc[0, 0]+'-'+df_a.iloc[0, 1]+'距离错误'# 写入距离
        time.sleep(0.5)
    '''
    # 距离写入Jason
    df.to_json('distance.json', orient='records', indent=1, force_ascii=False)  # ,orient="values")
    # 读取json
    with open("distance.json", 'r', encoding='utf-8') as f:
        data = json.load(f)
    print(data)
    for i in range(len(data)):  # 写入数据
        try:
            sh.cells[i + 1, 0].value = i + 1
            sh.cells[i + 1, 1].value = data[i]["start"]
            sh.cells[i + 1, 2].value = data[i]["end"]
            sh.cells[i + 1, 3].value = data[i]["距离"]
        except:
            print('写入错误')
    '''
    app.display_alerts = False
    app.screen_updating = False
    wb.save('distance.xlsx')
    wb.close()
    app.quit()


# df = pd.DataFrame()
if __name__ == "__main__":
    opt = ChromeOptions()  # 创建Chrome参数对象
    opt.headless = False  # 把Chrome设置成可视化无界面模式,windows/Linux 皆可
    driver = Chrome(options=opt)
    # driver = webdriver.Chrome()
    driver.get('https://map.baidu.com/@13383023,3528954,13z')
    time.sleep(1)
    #关闭窗口
    driver.find_element(By.XPATH,"//div[@class='tang-foreground']/div[1]/div[1]/a").click() # 点击关闭窗口
    # print(my_element)
    # my_element.click()
    driver.find_element(By.XPATH,
        "//div[@class='searchbox-content-button right-button route-button loading-button']").click()  # 点击路线导航
    driver.find_element(By.XPATH,
        "//div[@class='searchbox-content-common route-tabs']/div[@class='tab-item drive-tab']/span").click()  # 点击驾车导航

    location = ['北京', '上海', '深圳', '合肥', '杭州']
    time.sleep(0.5)
    #调用excel查询
    write_only()

    try:  # 关闭后台浏览器
        driver.close()
        driver.quit()
        os.system('taskkill /F /IM chromedriver.exe')  # 关闭进程浏览器
        sreach_windows = driver.current_window_handle
        # 获得当前所有打开的窗口的句柄
        all_handles = driver.window_handles
        for handle in all_handles:
            driver.switch_to.window(handle)
            driver.close()
            time.sleep(1.2)
    except:
        print('已完后台毕浏览器')

获取车辆位置:

车旺大卡

from telnetlib import EC
import requests
from bs4 import BeautifulSoup
import datetime
import json
import xlwings as xw
from selenium import webdriver
import time
import pandas as pd
from selenium.webdriver import chrome,ChromeOptions,ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import csv
import multiprocessing
import os
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys   # 键盘的按钮指令
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

if __name__ == '__main__':
    '''
    #Google浏览器
    opt = ChromeOptions()  # 创建chrome参数
    # 不加载图片
    # prefs = {"profile.managed_default_content_settings.images": 2}
    # opt.add_experimental_option("prefs", prefs)
    # 超时不加载
    opt.page_load_strategy = 'eager'
    opt.headless = False  # 显示浏览器
    driver = Chrome(options=opt)  # 浏览器实例化
    # 最大化当前页
    # driver.maximize_window()
    # driver=webdriver.Chrome()
    # driver.set_window_size(300, 700)
    '''
    ''''''
    # 火狐浏览器
    opt = FirefoxOptions()  # ChromeOptions()
    # 加载图片632
    opt.headless = False  # 显示浏览器
    driver = webdriver.Firefox(options=opt)  # Chrome(options=opt)  # 浏览器实例化
    # driver.set_window_size(400, 900)
    # 不加载图片
    # opt.set_preference('permissions.default.image', 2)
    # driver = webdriver.Firefox(options=opt)  # Chrome(options=opt)  # 浏览器实例化
    ''''''
    # 登录
    url = 'http://daka.95155.com/login.html'
    # url ='https://login.51job.com/login.php?loginway=0&isjump=0&lang=c&from_domain=i&url='#调试代码
    driver.get(url)  # 加载网址
    time.sleep(1)
    # 最新反扒(延迟+CSS框架)
    driver.switch_to.frame('businesslineIframe')
    #测试获取文本
    # my_element=driver.find_element(By.XPATH,"//div[@class='el-dialog__body']/div[@class='newuser']/span").text # 获取登录标签
    # my_element=driver.find_element(By.XPATH,"//div[@class='el-tabs__nav is-top is-stretch']/div[contains(@id,'tab-password')]") # 获取密码登录信息
    my_element=driver.find_element(By.XPATH,"//div[@class='el-tabs__nav is-top is-stretch']/div[2]") # 获取密码登录信息
    # my_element=driver.find_element(By.XPATH,"//div[@class='loginBtnWrap']/button[@class='el-button loginBtn el-button--primary']/span[text()=\"登录\"]").text # 获取登录标签
    # my_element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="app"]/div[2]/div[3]')))
    # my_element =driver.find_element(By.XPATH,"//div[@class='el-input el-input--prefix el-input--suffix']/input[@class='el-input__inner']")
    # print(my_element.text)
    #鼠标点击
    ActionChains(driver).move_to_element(my_element).perform()#密码标签登录
    #js点击密码登录标签
    js = 'document.getElementsByClassName("el-tabs__item is-top")[1].click()'
    js1 = 'document.getElementById("tab-password").click()'
    driver.execute_script(js1)
    time.sleep(0.3)
    my_element.send_keys(Keys.ENTER)
    my_element.send_keys(Keys.TAB)
    name = ''
    word = ''
    ''''''
    # 通过tab键盘滑动输入账户密码
    driver.switch_to.active_element.send_keys(Keys.TAB)
    time.sleep(0.3)
    driver.switch_to.active_element.send_keys(name)
    time.sleep(0.3)
    driver.switch_to.active_element.send_keys(Keys.TAB)
    time.sleep(0.3)
    driver.switch_to.active_element.send_keys(word)
    time.sleep(0.3)

    # WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@class='el-form-item__content']/"
    #                                                                           "div[@class='el-input el-input--prefix el-input--suffix']/input[@class='el-input__inner']"))).send_keys(Keys.SPACE)
    # driver.find_element(By.XPATH,
    #     "//div[@class='el-form-item__content']/div[@class='el-input el-input--prefix el-input--suffix']/input[@class='el-input__inner']").clear()  # 输入用户名
    # 点击账户登录
    driver.find_element(By.XPATH, "//div[@class='loginBtnWrap']/*[@class='el-button loginBtn el-button--primary']"). \
        send_keys(Keys.ENTER)  # .click() # 点击账户登录
    # #已报错代码:
    # driver.find_element_by_xpath(
    #     ".//div[@class='loginBtnWrap']/*[@class='el-button loginBtn el-button--primary']").click()  # 点击账户登录
    # 升级后写法
    # driver.find_element(By.XPATH, "//div[@class='loginBtnWrap']/*[@class='el-button loginBtn el-button--primary']"). \
    #     send_keys(Keys.ENTER)  # .click() # 点击账户登录
    # 点击车辆监控
    time.sleep(2)
    url='http://daka.95155.com/home/index/index.html?timestamp=1662251465945'
    driver.get(url)
    time.sleep(1)
    source = driver.page_source  # 页面内容实例化
    html = BeautifulSoup(source, 'html.parser')  # 获取页面内容
    #写入html文件
    with open('chewanghtmlText.html','w',encoding='utf-8-sig') as f:#gbk,utf-8-sig\gb2312
        f.write(source)
        # print(html)
    #页面切换
    # driver.switch_to.window(driver.window_handles[0])
    # search_window = driver.current_window_handle  # 此行代码用来定位当前页面
    # my_element=driver.find_element(By.XPATH, "//div[@id='app']")#.click()#send_keys(Keys.ENTER)  # 获取页面信息
    #获取车辆管理按钮
    my_element=driver.find_element(By.XPATH, "//*[@*='sliderBar']/ul/li[2]")#.click()#send_keys(Keys.ENTER)  # 车辆管理按钮
    # print(my_element.text)
    #点击进行车辆查询
    my_element.click()#点击车辆查询
    time.sleep(0.5)
    #输入车牌号
    my_element = driver.find_element(By.XPATH,"//*[@*='outSearch']/div[1]/input")  # .click()#send_keys(Keys.ENTER)  # 车辆管理按钮
    # print(my_element.text)
    vehicle_license="鲁DD18351"
    my_element.send_keys(vehicle_license)#输入车牌号
    time.sleep(0.5)
    #点击查询
    my_element = driver.find_element(By.XPATH,"//*[@*='outSearch']/div/div[@class='el-input-group__append']/button")  # div标签按自然数顺序从1开始.click()#send_keys(Keys.ENTER)  # 车辆管理按钮
    # print(my_element)
    #查询车辆位置
    my_element.click()#查询车辆位置
    time.sleep(1.5)
    #获取车辆车辆信息
    my_element = driver.find_element(By.XPATH,"//*[@*='amap-overlays']/div[1]/div[1]/div[1]/div[@class='map-tip-info']")  # div标签按自然数顺序从1开始.click()#send_keys(Keys.ENTER)  # 车辆管理按钮
    print(my_element.text)


网络货运平台

聚盟

from telnetlib import EC
import requests
from bs4 import BeautifulSoup
import datetime
import json
import xlwings as xw
from selenium import webdriver
import time
import pandas as pd
from selenium.webdriver import chrome,ChromeOptions,ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import csv
import multiprocessing
import os
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys   # 键盘的按钮指令
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

if __name__ == '__main__':
    ''''''
    #Google浏览器
    opt = ChromeOptions()  # 创建chrome参数
    # 不加载图片
    # prefs = {"profile.managed_default_content_settings.images": 2}
    # opt.add_experimental_option("prefs", prefs)
    # 超时不加载
    opt.page_load_strategy = 'eager'
    opt.headless = False  # 显示浏览器
    driver = Chrome(options=opt)  # 浏览器实例化
    # 最大化当前页
    # driver.maximize_window()
    # driver=webdriver.Chrome()
    # driver.set_window_size(300, 700)
    ''''''
    '''
    # 火狐浏览器
    opt = FirefoxOptions()  # ChromeOptions()
    # 加载图片632
    opt.headless = False  # 显示浏览器
    driver = webdriver.Firefox(options=opt)  # Chrome(options=opt)  # 浏览器实例化
    # driver.set_window_size(400, 900)
    # 不加载图片
    # opt.set_preference('permissions.default.image', 2)
    # driver = webdriver.Firefox(options=opt)  # Chrome(options=opt)  # 浏览器实例化
    '''
    # 登录
    url = 'https://www.fengyupt.com/page/module/user/login.php'
    # url ='https://login.51job.com/login.php?loginway=0&isjump=0&lang=c&from_domain=i&url='#调试代码
    driver.get(url)  # 加载网址
    time.sleep(1)
    # my_element = driver.find_element(By.XPATH, "//div[@class='tpl-login']/div[@class='tpl-login-content']/div[3]")  # 总测试
    # my_element = driver.find_element(By.XPATH, "//div[@class='tpl-login-content']/div[3]/form/div[2]/input")  # 获取密码登录信息
    # print(my_element)
    # print(my_element.text)
    name = ''
    word = ''
    # my_element.send_keys('34')
    driver.find_element(By.XPATH, "//div[@class='tpl-login-content']/div[3]/form/div[1]/input").send_keys(name)#账户输入
    driver.find_element(By.XPATH, "//div[@class='tpl-login-content']/div[3]/form/div[2]/input").send_keys(word)#密码输入
    time.sleep(0.5)
    #账户登录
    my_element = driver.find_element(By.XPATH, "//div[@class='tpl-login-content']/div[3]/form/div[3]/button")  # 登录录信息
    my_element.click()
    # print(my_element)
    # print(my_element.text)
    time.sleep(1)
    #重新刷新网页
    url='https://www.fengyupt.com/page/module/index/wellcome.php?a=1'
    driver.get(url)  # 加载网址
    driver.maximize_window()
    #点击发货货源模块
    my_element = driver.find_element(By.XPATH, "//div[@class='menuBar restructure-vue-left-menu']/ul[1]/li[2]")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.click()
    #发货码发货
    time.sleep(0.7)
    my_element = driver.find_element(By.XPATH, "//div[@class='menuBar restructure-vue-left-menu']/ul[1]/li[2]/ul[1]/li[1]")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.click()
    # my_element.get_attribute("href")
    #输入信息
    time.sleep(0.7)
    my_element = driver.find_element(By.XPATH,"//div[@class='widget-body am-fr']/form[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/div[1]/input")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.send_keys('12')
    #确认按钮
    my_element = driver.find_element(By.XPATH,"//div[@class='widget-body am-fr']/form[1]/table[1]/tbody[1]/tr[21]/td[2]/button")  # 登录录信息
    print(my_element)
    print(my_element.text)
    my_element.click()



网络货运平台:

from telnetlib import EC
import requests
from bs4 import BeautifulSoup
import datetime
import json
import xlwings as xw
from selenium import webdriver
import time
import pandas as pd
from selenium.webdriver import chrome,ChromeOptions,ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import csv
import multiprocessing
import os
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys   # 键盘的按钮指令
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

if __name__ == '__main__':
    ''''''
    #Google浏览器
    opt = ChromeOptions()  # 创建chrome参数
    # 不加载图片
    # prefs = {"profile.managed_default_content_settings.images": 2}
    # opt.add_experimental_option("prefs", prefs)
    # 超时不加载
    opt.page_load_strategy = 'eager'
    opt.headless = False  # 显示浏览器
    driver = Chrome(options=opt)  # 浏览器实例化
    # 最大化当前页
    # driver.maximize_window()
    # driver=webdriver.Chrome()
    # driver.set_window_size(300, 700)
    ''''''
    '''
    # 火狐浏览器
    opt = FirefoxOptions()  # ChromeOptions()
    # 加载图片632
    opt.headless = False  # 显示浏览器
    driver = webdriver.Firefox(options=opt)  # Chrome(options=opt)  # 浏览器实例化
    # driver.set_window_size(400, 900)
    # 不加载图片
    # opt.set_preference('permissions.default.image', 2)
    # driver = webdriver.Firefox(options=opt)  # Chrome(options=opt)  # 浏览器实例化
    '''
    # 登录
    url = ''
    # url ='
loginway=0&isjump=0&lang=c&from_domain=i&url='#调试代码
    driver.get(url)  # 加载网址
    time.sleep(1)
    # my_element = driver.find_element(By.XPATH, "//div[@class='el-tabs el-tabs--top']/div[2]/div[1]/form[1]/div[1]/div[1]/div[1]/input")  # 总测试
    # print(my_element)
    # print(my_element.text)
    # my_element.send_keys('12')
    #登录账户密码
    name = ''
    word = ''
    my_element = driver.find_element(By.XPATH,"//div[@class='el-tabs el-tabs--top']/div[2]/div[1]/form[1]/div[1]/div[1]/div[1]/input")  # 账户文本框
    my_element.send_keys(name)
    time.sleep(0.5)
    my_element = driver.find_element(By.XPATH,"//div[@class='el-tabs el-tabs--top']/div[2]/div[1]/form[1]/div[2]/div[1]/div[1]/input")  # 账户文本框
    my_element.send_keys(word)
    time.sleep(8.5)
    #点击登录按钮
    my_element = driver.find_element(By.XPATH,"//div[@class='el-tabs el-tabs--top']/div[2]/div[1]/button")  #点击登录按钮
    my_element.click()
    time.sleep(1.5)
    #发布订单按钮
    my_element = driver.find_element(By.XPATH, "//div[@class='container ly-container']/div[1]/div[1]/div[2]/button[1]")  # 点击登录按钮
    # print(my_element)
    # print(my_element.text)
    my_element.click()
    time.sleep(1.5)
    #打开订单新增页面
    # url='https://sly.tsc56.com/#/transport/order'
    # driver.get(url)
    my_element = driver.find_element(By.XPATH,"//form[@class='el-form el-form--inline']/div[1]/div[1]/div[1]/div[1]/input")  # 点击登录按钮
    # print(my_element)
    # print(my_element.text)
    my_element.send_keys('12')
    # 提交按钮
    my_element = driver.find_element(By.XPATH,"//div[@class='ly-btns']/div[1]/button")  # 点击登录按钮
    print(my_element)
    print(my_element.text)
    my_element.click()
    # 写入html文件
    source = driver.page_source  # 页面内容实例化
    html = BeautifulSoup(source, 'html.parser')  # 获取页面内容
    with open('shunluyuntmlText.html', 'w', encoding='utf-8-sig') as f:  # gbk,utf-8-sig\gb2312
        f.write(source)
        # print(html)


    '''
    # my_element = driver.find_element(By.XPATH, "//div[@class='tpl-login']/div[@class='tpl-login-content']/div[3]")  # 总测试
    # my_element = driver.find_element(By.XPATH, "//div[@class='tpl-login-content']/div[3]/form/div[2]/input")  # 获取密码登录信息
    # print(my_element)
    # print(my_element.text)
    name = '13588840451'
    word = 'lhf123456'
    # my_element.send_keys('34')
    driver.find_element(By.XPATH, "//div[@class='tpl-login-content']/div[3]/form/div[1]/input").send_keys(name)#账户输入
    driver.find_element(By.XPATH, "//div[@class='tpl-login-content']/div[3]/form/div[2]/input").send_keys(word)#密码输入
    time.sleep(0.5)
    #账户登录
    my_element = driver.find_element(By.XPATH, "//div[@class='tpl-login-content']/div[3]/form/div[3]/button")  # 登录录信息
    my_element.click()
    # print(my_element)
    # print(my_element.text)
    time.sleep(1)
    #重新刷新网页
    url='https://www.fengyupt.com/page/module/index/wellcome.php?a=1'
    driver.get(url)  # 加载网址
    driver.maximize_window()
    #点击发货货源模块
    my_element = driver.find_element(By.XPATH, "//div[@class='menuBar restructure-vue-left-menu']/ul[1]/li[2]")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.click()
    #发货码发货
    time.sleep(0.7)
    my_element = driver.find_element(By.XPATH, "//div[@class='menuBar restructure-vue-left-menu']/ul[1]/li[2]/ul[1]/li[1]")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.click()
    # my_element.get_attribute("href")
    #输入信息
    time.sleep(0.7)
    my_element = driver.find_element(By.XPATH,"//div[@class='widget-body am-fr']/form[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/div[1]/input")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.send_keys('12')
    #确认按钮
    my_element = driver.find_element(By.XPATH,"//div[@class='widget-body am-fr']/form[1]/table[1]/tbody[1]/tr[21]/td[2]/button")  # 登录录信息
    print(my_element)
    print(my_element.text)
    my_element.click()
    '''


爬取无车承运人或网络货运平台订单信息

from telnetlib import EC
import requests
from bs4 import BeautifulSoup
import datetime
import json
import xlwings as xw
from selenium import webdriver
import time
import pandas as pd
from selenium.webdriver import chrome,ChromeOptions,ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import csv
import multiprocessing
import os
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys   # 键盘的按钮指令
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

def write_only():
    df = pd.DataFrame()
    df_a = pd.DataFrame()
    app = xw.App(visible=True, add_book=False)
    wb = app.books.open('抽检任务.xls')
    # 创建一个worksheet
    sh = wb.sheets['sheet1']
    order_number = [i for i in sh.range("E:E").value if i != None]  # 单元格内容
    j = sh.range('a1').expand('table').rows.count  # 序号
    print("行数", j)
    for i in range(len(order_number) - 1):
        try:
            my_element = driver.find_element(By.XPATH, "//section[@class='y-center search-container']/button[1]")  # 查询
            driver.find_element(By.XPATH, "//div[@class='field-item']/div[1]/input[1]").send_keys(order_number[i+1])  # 输入订单号
            time.sleep(0.5)
            my_element.click()
            time.sleep(0.5)
            my_element = driver.find_element(By.XPATH, "//tbody[1]/tr[1]/td[7]/div[1]/span[1]/span[1]/a")  # 点击订单
            my_element.click()
            time.sleep(4)

            my_element = driver.find_element(By.XPATH, "//div[@class='waybill-base-container ']/div[2]/span[2]")  # 货源单号
            cut_a = my_element.text.find(':')+1
            cut_b = len(my_element.text)
            print(cut_a, cut_b)
            my_element_ordernumber = my_element.text.strip(':')[cut_a:cut_b]
            print(my_element_ordernumber)
            sh.cells[i + 1, 7].value = my_element_ordernumber+''  # df_a.iloc[0, 2]#写入订单号
            driver.back()  # 返回输入单号
            time.sleep(1)
            # for i in range(len(location)):
            # df_a = data_a(location[i], location[i + 1])  # 执行查询
            # df_a = data_a(order_number[i + 1], rng_end[i + 1])  # 执行查询
            # df = pd.concat([df_a, df], axis=0)  # 加入基础数据列
            # time.sleep(0.5)

            # sh.cells[i + 1, 4].value = df_a.iloc[0, 0]+'-'+df_a.iloc[0, 1]+'距离'+df_a.iloc[0, 2]#加入备注
            # print(order_number)
            # # print(df_a.iloc[0, 2])
        except:
            print('查询错误')
            sh.cells[i + 1, 7].value = '错误' # df_a.iloc[0, 2]#写入距‘
            # sh.cells[i + 1, 3].value = df_a.iloc[0, 0]+'-'+df_a.iloc[0, 1]+'距离错误'# 写入距离
        time.sleep(0.5)
    '''
    # 距离写入Jason
    df.to_json('distance.json', orient='records', indent=1, force_ascii=False)  # ,orient="values")
    # 读取json
    with open("distance.json", 'r', encoding='utf-8') as f:
        data = json.load(f)
    print(data)
    for i in range(len(data)):  # 写入数据
        try:
            sh.cells[i + 1, 0].value = i + 1
            sh.cells[i + 1, 1].value = data[i]["start"]
            sh.cells[i + 1, 2].value = data[i]["end"]
            sh.cells[i + 1, 3].value = data[i]["距离"]
        except:
            print('写入错误')
    '''
    app.display_alerts = False
    app.screen_updating = False
    wb.save('distance.xlsx')
    wb.close()
    app.quit()



if __name__ == '__main__':
    ''''''
    #Google浏览器
    opt = ChromeOptions()  # 创建chrome参数
    # 不加载图片
    # prefs = {"profile.managed_default_content_settings.images": 2}
    # opt.add_experimental_option("prefs", prefs)
    # 超时不加载
    opt.page_load_strategy = 'eager'
    opt.headless = False  # 显示浏览器
    driver = Chrome(options=opt)  # 浏览器实例化
    # 最大化当前页
    # driver.maximize_window()
    # driver=webdriver.Chrome()
    # driver.set_window_size(300, 700)
    ''''''
    '''
    # 火狐浏览器
    opt = FirefoxOptions()  # ChromeOptions()
    # 加载图片632
    opt.headless = False  # 显示浏览器
    driver = webdriver.Firefox(options=opt)  # Chrome(options=opt)  # 浏览器实例化
    # driver.set_window_size(400, 900)
    # 不加载图片
    # opt.set_preference('permissions.default.image', 2)
    # driver = webdriver.Firefox(options=opt)  # Chrome(options=opt)  # 浏览器实例化
    '''
    # 登录
    url = 'http://enterprise.shanxi.zhihuiwuliu.org.cn/#/supervise/inspect'
    # url ='https://login.51job.com/login.php?loginway=0&isjump=0&lang=c&from_domain=i&url='#调试代码
    driver.get(url)  # 加载网址
    time.sleep(1)
    my_element = driver.find_element(By.XPATH, "//form[@class='el-form']/section[2]/button[@class='el-button el-button--primary']")  # 总测试
    # my_element = driver.find_element(By.XPATH, "//div[@class='tpl-login-content']/div[3]/form/div[2]/input")  # 获取密码登录信息
    print(my_element.text)
    # print(my_element.text)
    name = ''
    word = ''

    # my_element.send_keys('34')
    driver.find_element(By.XPATH, "//div[@class='el-form-item__content']/div[@class='el-input']/input[1]").send_keys(name)#账户输入
    driver.find_element(By.XPATH, "//div[@class='el-form-item__content']/div[@class='el-input el-input--suffix']/input[1]").send_keys(word)#密码输入
    time.sleep(1.5)
    #账户登录
    my_element = driver.find_element(By.XPATH, "//form[@class='el-form']/section[2]/button[@class='el-button el-button--primary']")  # 登录录信息
    my_element.click()
    time.sleep(2.5)
    write_only()


    '''
    time.sleep(1)
    #重新刷新网页
    url='https://www.fengyupt.com/page/module/index/wellcome.php?a=1'
    driver.get(url)  # 加载网址
    driver.maximize_window()
    #点击发货货源模块
    my_element = driver.find_element(By.XPATH, "//div[@class='menuBar restructure-vue-left-menu']/ul[1]/li[2]")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.click()
    #发货码发货
    time.sleep(0.7)
    my_element = driver.find_element(By.XPATH, "//div[@class='menuBar restructure-vue-left-menu']/ul[1]/li[2]/ul[1]/li[1]")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.click()
    # my_element.get_attribute("href")
    #输入信息
    time.sleep(0.7)
    my_element = driver.find_element(By.XPATH,"//div[@class='widget-body am-fr']/form[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/div[1]/input")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.send_keys('12')
    #确认按钮
    my_element = driver.find_element(By.XPATH,"//div[@class='widget-body am-fr']/form[1]/table[1]/tbody[1]/tr[21]/td[2]/button")  # 登录录信息
    print(my_element)
    print(my_element.text)
    my_element.click()
    '''


抽检数据查询:

from telnetlib import EC
import requests
from bs4 import BeautifulSoup
import datetime
import json
import xlwings as xw
from selenium import webdriver
import time
import pandas as pd
from selenium.webdriver import chrome,ChromeOptions,ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import csv
import multiprocessing
import os
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys   # 键盘的按钮指令
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def write_only():
    df = pd.DataFrame()
    df_a = pd.DataFrame()
    app = xw.App(visible=True, add_book=False)
    wb = app.books.open('抽检任务.xls')
    # 创建一个worksheet
    sh = wb.sheets['sheet1']
    order_number = [i for i in sh.range("E:E").value if i != None]  # 单元格内容
    j = sh.range('a1').expand('table').rows.count  # 序号
    print("行数", j)
    for i in range(len(order_number) - 1):
        try:
            my_element = driver.find_element(By.XPATH, "//section[@class='y-center search-container']/button[1]")  # 查询
            driver.find_element(By.XPATH, "//div[@class='field-item']/div[1]/input[1]").send_keys(order_number[i+1])  # 抽检单号
            #div[contains(@class,“a”)
            # driver.find_element(By.XPATH, "//div[@class='el-input el-input--small el-input--suffix']/input[1]").send_keys(order_number[i + 1])  # 抽检单号

            time.sleep(0.5)
            my_element.click()
            time.sleep(1)
            my_element = driver.find_element(By.XPATH, "//tbody[1]/tr[1]/td[7]/div[1]/span[1]/span[1]/a")  # 点击订单
            time.sleep(0.5)
            my_element.click()
            time.sleep(4)
            # 货源单号
            my_element = driver.find_element(By.XPATH, "//div[@class='waybill-base-container ']/div[2]/span[2]")  # 货源单号
            cut_a = my_element.text.find(':')+1
            cut_b = len(my_element.text)
            print(cut_a, cut_b)
            my_element_ordernumber = my_element.text.strip(':')[cut_a:cut_b]
            print(my_element_ordernumber)
            sh.cells[i + 1, 7].value = my_element_ordernumber+''  # df_a.iloc[0, 2]#写入订单号
            # 发货时间
            my_element = driver.find_element(By.XPATH, "//div[@class='waybill-base-container ']/div[2]/span[3]")  # 货源单号
            cut_a = my_element.text.find(':') + 1
            cut_b = len(my_element.text)
            print(cut_a, cut_b)
            my_element_ordernumber = my_element.text.strip(':')[cut_a:cut_b]
            print(my_element_ordernumber)
            sh.cells[i + 1, 9].value = my_element_ordernumber + ''  # df_a.iloc[0, 2]#写入发货时间
            # 收货时间
            my_element = driver.find_element(By.XPATH, "//div[@class='waybill-base-container ']/div[2]/span[4]")  # 货源单号
            cut_a = my_element.text.find(':') + 1
            cut_b = len(my_element.text)
            print(cut_a, cut_b)
            my_element_ordernumber = my_element.text.strip(':')[cut_a:cut_b]
            print(my_element_ordernumber)
            sh.cells[i + 1, 10].value = my_element_ordernumber + ''  # df_a.iloc[0, 2]#写入收货时间
            # 获取托运人信息
            my_element = driver.find_element(By.XPATH,"//div[@class='waybill-base-container ']/div[2]/span[1]/a")  # 货源单号
            cut_a = my_element.text.find(':') + 1
            cut_b = len(my_element.text)
            print(cut_a, cut_b)
            my_element_ordernumber = my_element.text.strip(':')[cut_a:cut_b]
            print(my_element_ordernumber)
            sh.cells[i + 1, 8].value = my_element_ordernumber + ''  # df_a.iloc[0, 2]#写入订单号
            time.sleep(0.5)

            # 获取发货区域信息
            my_element = driver.find_element(By.XPATH,
                                             "//div[@class='content-body']/div[1]/div[1]/div[1]/span[3]")  # 发货区域信息
            cut_a = my_element.text.find(':') + 1
            cut_b = len(my_element.text)
            print(cut_a, cut_b)
            my_element_ordernumber = my_element.text.strip(':')[cut_a:cut_b]
            print(my_element_ordernumber)
            sh.cells[i + 1, 11].value = my_element_ordernumber + ''  # df_a.iloc[0, 2]#写入发货区域信息
            time.sleep(0.5)
            # 获取收货区域信息
            my_element = driver.find_element(By.XPATH,
                                             "//div[@class='content-body']/div[1]/div[2]/div[1]/span[3]")  # 收货区域信息
            cut_a = my_element.text.find(':') + 1
            cut_b = len(my_element.text)
            print(cut_a, cut_b)
            my_element_ordernumber = my_element.text.strip(':')[cut_a:cut_b]
            print(my_element_ordernumber)
            sh.cells[i + 1, 12].value = my_element_ordernumber + ''  # df_a.iloc[0, 2]#写入订单号
            time.sleep(0.5)
            # 获取货物名称信息#div[contains(@class,“a”)
            my_element = driver.find_element(By.XPATH,
                                             "//div[@class='el-table__body-wrapper is-scrolling-none']/table[1]/tbody[1]/tr[1]/td[1]/div[1]/span[1]")  # 货物名称
            cut_a = my_element.text.find(':') + 1
            cut_b = len(my_element.text)
            print(cut_a, cut_b)
            my_element_ordernumber = my_element.text.strip(':')[cut_a:cut_b]
            print(my_element_ordernumber)
            sh.cells[i + 1, 13].value = my_element_ordernumber + ''  # df_a.iloc[0, 2]#写入订单号
            time.sleep(0.5)
            # 获取货物类型信息#div[contains(@class,“a”)
            my_element = driver.find_element(By.XPATH,
                                             "//div[@class='el-table__body-wrapper is-scrolling-none']/table[1]/tbody[1]/tr[1]/td[2]/div[1]/span[1]")  # 货物名称
            cut_a = my_element.text.find(':') + 1
            cut_b = len(my_element.text)
            print(cut_a, cut_b)
            my_element_ordernumber = my_element.text.strip(':')[cut_a:cut_b]
            print(my_element_ordernumber)
            sh.cells[i + 1, 14].value = my_element_ordernumber + ''  # df_a.iloc[0, 2]#写入订单号
            time.sleep(0.5)
            # 获取货物重量信息#div[contains(@class,“a”)
            my_element = driver.find_element(By.XPATH,
                                             "//div[@class='el-table__body-wrapper is-scrolling-none']/table[1]/tbody[1]/tr[1]/td[4]/div[1]/span[1]")  # 货物名称
            cut_a = my_element.text.find(':') + 1
            cut_b = len(my_element.text)
            print(cut_a, cut_b)
            my_element_ordernumber = my_element.text.strip(':')[cut_a:cut_b]
            print(my_element_ordernumber)
            sh.cells[i + 1, 15].value = my_element_ordernumber + ''  # df_a.iloc[0, 2]#写入货物重量
            time.sleep(0.5)

            driver.back()  # 返回输入单号
            time.sleep(1)
            # for i in range(len(location)):
            # df_a = data_a(location[i], location[i + 1])  # 执行查询
            # df_a = data_a(order_number[i + 1], rng_end[i + 1])  # 执行查询
            # df = pd.concat([df_a, df], axis=0)  # 加入基础数据列
            # time.sleep(0.5)

            # sh.cells[i + 1, 4].value = df_a.iloc[0, 0]+'-'+df_a.iloc[0, 1]+'距离'+df_a.iloc[0, 2]#加入备注
            # print(order_number)
            # # print(df_a.iloc[0, 2])
        except:
            print('查询错误')
            driver.back()  # 返回输入单号
            sh.cells[i + 1, 7].value = '错误' # df_a.iloc[0, 2]#写入距‘
            # sh.cells[i + 1, 3].value = df_a.iloc[0, 0]+'-'+df_a.iloc[0, 1]+'距离错误'# 写入距离
        time.sleep(0.5)
    '''
    # 距离写入Jason
    df.to_json('distance.json', orient='records', indent=1, force_ascii=False)  # ,orient="values")
    # 读取json
    with open("distance.json", 'r', encoding='utf-8') as f:
        data = json.load(f)
    print(data)
    for i in range(len(data)):  # 写入数据
        try:
            sh.cells[i + 1, 0].value = i + 1
            sh.cells[i + 1, 1].value = data[i]["start"]
            sh.cells[i + 1, 2].value = data[i]["end"]
            sh.cells[i + 1, 3].value = data[i]["距离"]
        except:
            print('写入错误')
    '''
    app.display_alerts = False
    app.screen_updating = False
    wb.save('抽检任务.xls')
    wb.close()
    app.quit()



if __name__ == '__main__':
    ''''''
    #Google浏览器
    opt = ChromeOptions()  # 创建chrome参数
    # 解决最小化不加载数据
    chrome_options = Options()
    chrome_options.headless = True
    driver = webdriver.Chrome(options=chrome_options)

    # chrome_options = Options()
    # opt.add_argument(' headless')
    # opt.add_argument(' disable-gpu')
    # 不加载图片
    # prefs = {"profile.managed_default_content_settings.images": 2}
    # opt.add_experimental_option("prefs", prefs)
    # 超时不加载
    # opt.page_load_strategy = 'eager'
    #     opt.headless = False#True#  # 显示浏览器
    #     driver = Chrome(options=opt)  # 浏览器实例化
    # driver.minimize_window()  # 将浏览器最大化显示
    # 最大化当前页
    # driver.maximize_window()
    # driver=webdriver.Chrome()
    # driver.set_window_size(300, 700)
    ''''''
    '''
    # 火狐浏览器
    opt = FirefoxOptions()  # ChromeOptions()
    # 加载图片632
    opt.headless = False  # 显示浏览器
    driver = webdriver.Firefox(options=opt)  # Chrome(options=opt)  # 浏览器实例化
    # driver.set_window_size(400, 900)
    # 不加载图片
    # opt.set_preference('permissions.default.image', 2)
    # driver = webdriver.Firefox(options=opt)  # Chrome(options=opt)  # 浏览器实例化
    '''
    # 登录
    url = 'http://enterprise.shanxi.zhihuiwuliu.org.cn/#/supervise/inspect'
    # url ='https://login.51job.com/login.php?loginway=0&isjump=0&lang=c&from_domain=i&url='#调试代码
    driver.get(url)  # 加载网址
    time.sleep(1)
    my_element = driver.find_element(By.XPATH, "//form[@class='el-form']/section[2]/button[@class='el-button el-button--primary']")  # 总测试
    # my_element = driver.find_element(By.XPATH, "//div[@class='tpl-login-content']/div[3]/form/div[2]/input")  # 获取密码登录信息
    print(my_element.text)
    # print(my_element.text)
    name = ''
    word = ''

    # my_element.send_keys('34')
    driver.find_element(By.XPATH, "//div[@class='el-form-item__content']/div[@class='el-input']/input[1]").send_keys(name)#账户输入
    driver.find_element(By.XPATH, "//div[@class='el-form-item__content']/div[@class='el-input el-input--suffix']/input[1]").send_keys(word)#密码输入
    time.sleep(1.5)
    #账户登录
    my_element = driver.find_element(By.XPATH, "//form[@class='el-form']/section[2]/button[@class='el-button el-button--primary']")  # 登录录信息
    time.sleep(1)
    my_element.click()
    time.sleep(2)
    write_only()


    '''
    time.sleep(1)
    #重新刷新网页
    url='https://www.fengyupt.com/page/module/index/wellcome.php?a=1'
    driver.get(url)  # 加载网址
    driver.maximize_window()
    #点击发货货源模块
    my_element = driver.find_element(By.XPATH, "//div[@class='menuBar restructure-vue-left-menu']/ul[1]/li[2]")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.click()
    #发货码发货
    time.sleep(0.7)
    my_element = driver.find_element(By.XPATH, "//div[@class='menuBar restructure-vue-left-menu']/ul[1]/li[2]/ul[1]/li[1]")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.click()
    # my_element.get_attribute("href")
    #输入信息
    time.sleep(0.7)
    my_element = driver.find_element(By.XPATH,"//div[@class='widget-body am-fr']/form[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/div[1]/input")  # 登录录信息
    # print(my_element)
    # print(my_element.text)
    my_element.send_keys('12')
    #确认按钮
    my_element = driver.find_element(By.XPATH,"//div[@class='widget-body am-fr']/form[1]/table[1]/tbody[1]/tr[21]/td[2]/button")  # 登录录信息
    print(my_element)
    print(my_element.text)
    my_element.click()
    '''


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

品尚公益团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值