PcLangweixian 2024-10-25 10:31 采纳率: 0%
浏览 42
已结题

python自动地图截图脚本

有偿找写个python
excl表a列名字,b列出发地,c列目的地,d列空
1.打开高德地图/百度地图
2.输入目的地选择第一个搜索项c列
3.输入出发地选择第一个搜索项b列
4.选择驾车导航
5.截图,命名a列
6.识别图片导航的公里数填写d列
7.保存截图,继续运行
8.关闭

其实就是导航目的地c,输入出发地b,截图,然后识别图片的公里数填写d列,图片保存在文件夹,命名a

  • 写回答

25条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-10-25 10:32
    关注

    🕖上午好,题主!目前:🟢[在线]
    📢参考通义千问、由郭老师整理提供!
    📣今日诗号:与君初相识,犹如故人归。

    要实现这个功能,我们需要几个步骤:

    1. 地图搜索和路线规划:使用高德地图或百度地图API。
    2. 自动化操作:使用Selenium等工具模拟浏览器操作。
    3. 截图:利用Selenium进行页面截图。
    4. 识别公里数:这一步可能需要OCR技术来识别图片中的文字。
    5. Excel读写:使用pandas处理Excel文件。

    下面我将给出一个大致的实现思路和部分代码示例。由于涉及多个复杂步骤,这里仅提供框架和关键部分代码,你可以根据具体需求进行调整和完善。

    步骤1: 准备环境

    确保安装了以下库:

    pip install selenium pandas openpyxl pytesseract pillow
    

    步骤2: 编写Python脚本

    导入所需库

    import pandas as pd
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    import time
    from PIL import Image
    import pytesseract
    

    设置Selenium WebDriver

    这里以Chrome为例:

    driver = webdriver.Chrome()
    

    读取Excel文件

    df = pd.read_excel('path_to_your_file.xlsx')
    

    遍历Excel行并执行操作

    for index, row in df.iterrows():
        name = row['A']
        start_location = row['B']
        end_location = row['C']
        
        # 打开地图网站
        driver.get("https://www.amap.com/")
        
        # 输入目的地并选择第一个选项
        search_box = driver.find_element(By.ID, "searchInput")
        search_box.clear()
        search_box.send_keys(end_location)
        time.sleep(2)  # 等待加载
        first_result = driver.find_element(By.CSS_SELECTOR, ".search-list .item:nth-child(1)")
        first_result.click()
        
        # 输入出发地并选择第一个选项
        search_box.clear()
        search_box.send_keys(start_location)
        time.sleep(2)
        first_result = driver.find_element(By.CSS_SELECTOR, ".search-list .item:nth-child(1)")
        first_result.click()
        
        # 选择驾车导航
        driver.find_element(By.LINK_TEXT, "驾车").click()
        
        # 截图并保存
        driver.save_screenshot(f"{name}.png")
        
        # 使用OCR识别公里数
        image = Image.open(f"{name}.png")
        text = pytesseract.image_to_string(image)
        distance = extract_distance(text)  # 自定义函数提取距离
        
        # 将公里数写入Excel
        df.at[index, 'D'] = distance
    
    # 保存更新后的Excel文件
    df.to_excel('path_to_your_file.xlsx', index=False)
    
    # 关闭浏览器
    driver.quit()
    

    OCR识别公里数的辅助函数(示例)

    def extract_distance(text):
        for line in text.split('\n'):
            if '公里' in line:
                return line.split('公里')[0].strip() + '公里'
        return None
    

    注意事项

    • API限制:直接使用地图网站可能会受到访问频率限制,建议考虑使用官方API。
    • OCR准确性:OCR技术对于识别图像中的文本有一定误差,可能需要优化。
    • 安全性:避免在公开环境中存储敏感信息如API密钥。

    以上是一个基本框架,你可能需要根据实际情况调整细节。希望这对你有所帮助!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月27日
  • 修改了问题 10月25日
  • 创建了问题 10月25日