有机z中国电影免费观看-友田真希一区二区-亚洲成肉网-亚洲成人自拍偷拍-神马午夜电影一区二区三区在线观看-神马午夜场-日本黄色一级网站-日本黄色一级视频-女优一区-女婴高潮h啪啪-久久久久久久精-久久久久久久极品内射-国产主播av-国产主播99-高清欧美性猛交xxxx-高清欧美性猛交

使用puppeteer實現(xiàn)瀏覽器自動化

Puppeteer 是一個 Node 庫,它提供了一個高級 API 來通過 DevTools 協(xié)議控制 Chromium 或 Chrome。Puppeteer 默認以 headless 模式運行,但是可以通過修改配置文件運行“有頭”模式。

可以實現(xiàn)手動操作瀏覽器的所有功能

 

生成頁面 PDF。
抓取 SPA(單頁應用)并生成預渲染內(nèi)容(即“SSR”(服務器端渲染))。
自動提交表單,進行 UI 測試,鍵盤輸入等。
創(chuàng)建一個時時更新的自動化測試環(huán)境。 使用最新的 JavaScript 和瀏覽器功能直接在最新版本的Chrome中執(zhí)行測試。
捕獲網(wǎng)站的 timeline trace,用來幫助分析性能問題。
測試瀏覽器擴展。

 

安裝

安裝有瀏覽器的版本

npm i puppeteer

這個版本自帶Chromium瀏覽器,體積在300多M

2024.1更新

現(xiàn)在默認不會安裝Chromium,如果要安裝,運行上述代碼以后,再運行"node node_modules\puppeteer\install.js",如果提示沒有install.js,則運行"node_modules\puppeteer\install.mjs"

如果電腦有谷歌瀏覽器,可以使用下面代碼

npm i puppeteer-core

 

簡單使用

截圖

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    //設置可視區(qū)域大小
    await page.setViewport({width: 1920, height: 800});
    await page.goto('https://youdata.163.com');
    //對整個頁面截圖
    await page.screenshot({
        path: './files/capture.png',  //圖片保存路徑
        type: 'png',
        fullPage: true //邊滾動邊截圖
        // clip: {x: 0, y: 0, width: 1920, height: 800}
    });
    //對頁面某個元素截圖
    let [element] = await page.$x('/html/body/section[4]/div/div[2]');
    await element.screenshot({
        path: './files/element.png'
    });
    await page.close();
    await browser.close();
})();

 

 

 

模擬用戶登錄

(async () => {
    const browser = await puppeteer.launch({
        slowMo: 100,    //放慢速度
        headless: false,
        defaultViewport: {width: 1440, height: 780},
        ignoreHTTPSErrors: false, //忽略 https 報錯
        args: ['--start-fullscreen'] //全屏打開頁面
    });
    const page = await browser.newPage();
    await page.goto('https://demo.youdata.com');
    //輸入賬號密碼
    const uniqueIdElement = await page.$('#uniqueId');
    await uniqueIdElement.type('admin@admin.com', {delay: 20});
    const passwordElement = await page.$('#password', {delay: 20});
    await passwordElement.type('123456');
    //點擊確定按鈕進行登錄
    let okButtonElement = await page.$('#btn-ok');
    //等待頁面跳轉(zhuǎn)完成,一般點擊某個按鈕需要跳轉(zhuǎn)時,都需要等待 page.waitForNavigation() 執(zhí)行完畢才表示跳轉(zhuǎn)成功
    await Promise.all([
        okButtonElement.click(),
        page.waitForNavigation()  
    ]);
    console.log('admin 登錄成功');
    await page.close();
    await browser.close();
})();

那么 ElementHandle 都提供了哪些操作元素的函數(shù)呢?

elementHandle.click():點擊某個元素
elementHandle.tap():模擬手指觸摸點擊
elementHandle.focus():聚焦到某個元素
elementHandle.hover():鼠標 hover 到某個元素上
elementHandle.type('hello'):在輸入框輸入文本

 

請求攔截

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    const blockTypes = new Set(['image', 'media', 'font']);
    await page.setRequestInterception(true); //開啟請求攔截
    page.on('request', request => {
        const type = request.resourceType();
        const shouldBlock = blockTypes.has(type);
        if(shouldBlock){
            //直接阻止請求
            return request.abort();
        }else{
            //對請求重寫
            return request.continue({
                //可以對 url,method,postData,headers 進行覆蓋
                headers: Object.assign({}, request.headers(), {
                    'puppeteer-test': 'true'
                })
            });
        }
    });
    await page.goto('https://demo.youdata.com');
    await page.close();
    await browser.close();
})();

那 page 頁面上都提供了哪些事件呢?

page.on('close') 頁面關閉
page.on('console') console API 被調(diào)用
page.on('error') 頁面出錯
page.on('load') 頁面加載完
page.on('request') 收到請求
page.on('requestfailed') 請求失敗
page.on('requestfinished') 請求成功
page.on('response') 收到響應
page.on('workercreated') 創(chuàng)建 webWorker
page.on('workerdestroyed') 銷毀 webWorker

 

獲取 WebSocket 響應

Puppeteer 目前沒有提供原生的用于處理 WebSocket 的 API 接口,但是我們可以通過更底層的 Chrome DevTool Protocol (CDP) 協(xié)議獲得

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    //創(chuàng)建 CDP 會話
    let cdpSession = await page.target().createCDPSession();
    //開啟網(wǎng)絡調(diào)試,監(jiān)聽 Chrome DevTools Protocol 中 Network 相關事件
    await cdpSession.send('Network.enable');
    //監(jiān)聽 webSocketFrameReceived 事件,獲取對應的數(shù)據(jù)
    cdpSession.on('Network.webSocketFrameReceived', frame => {
        let payloadData = frame.response.payloadData;
        if(payloadData.includes('push:query')){
            //解析payloadData,拿到服務端推送的數(shù)據(jù)
            let res = JSON.parse(payloadData.match(/\{.*\}/)[0]);
            if(res.code !== 200){
                console.log(`調(diào)用websocket接口出錯:code=${res.code},message=${res.message}`);
            }else{
                console.log('獲取到websocket接口數(shù)據(jù):', res.result);
            }
        }
    });
    await page.goto('https://netease.youdata.163.com/dash/142161/reportExport?pid=700209493');
    await page.waitForFunction('window.renderdone', {polling: 20});
    await page.close();
    await browser.close();
})();

 

植入 javascript 代碼

Puppeteer 最強大的功能是,你可以在瀏覽器里執(zhí)行任何你想要運行的 javascript 代碼,下面是我在爬 188 郵箱的收件箱用戶列表時,發(fā)現(xiàn)每次打開收件箱再關掉都會多處一個 iframe 來,隨著打開收件箱的增多,iframe 增多到瀏覽器卡到無法運行,所以我在爬蟲代碼里加了刪除無用 iframe 的腳本:

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://webmail.vip.188.com');
    //注冊一個 Node.js 函數(shù),在瀏覽器里運行
    await page.exposeFunction('md5', text =>
        crypto.createHash('md5').update(text).digest('hex')
    );
    //通過 page.evaluate 在瀏覽器里執(zhí)行刪除無用的 iframe 代碼
    await page.evaluate(async () =>  {
        let iframes = document.getElementsByTagName('iframe');
        for(let i = 3; i <  iframes.length - 1; i++){
            let iframe = iframes[i];
            if(iframe.name.includes("frameBody")){
                iframe.src = 'about:blank';
                try{
                    iframe.contentWindow.document.write('');
                    iframe.contentWindow.document.clear();
                }catch(e){}
                //把iframe從頁面移除
                iframe.parentNode.removeChild(iframe);
            }
        }
        //在頁面中調(diào)用 Node.js 環(huán)境中的函數(shù)
        const myHash = await window.md5('PUPPETEER');
        console.log(`md5 of ${myString} is ${myHash}`);
    });
    await page.close();
    await browser.close();
})();

page.evaluate(pageFunction[, ...args]):在瀏覽器環(huán)境中執(zhí)行函數(shù)
page.evaluateHandle(pageFunction[, ...args]):在瀏覽器環(huán)境中執(zhí)行函數(shù),返回 JsHandle 對象
page.$$eval(selector, pageFunction[, ...args]):把 selector 對應的所有元素傳入到函數(shù)并在瀏覽器環(huán)境執(zhí)行
page.$eval(selector, pageFunction[, ...args]):把 selector 對應的第一個元素傳入到函數(shù)在瀏覽器環(huán)境執(zhí)行
page.evaluateOnNewDocument(pageFunction[, ...args]):創(chuàng)建一個新的 Document 時在瀏覽器環(huán)境中執(zhí)行,會在頁面所有腳本執(zhí)行之前執(zhí)行
page.exposeFunction(name, puppeteerFunction):在 window 對象上注冊一個函數(shù),這個函數(shù)在 Node 環(huán)境中執(zhí)行,有機會在瀏覽器環(huán)境中調(diào)用 Node.js 相關函數(shù)庫

 

抓取 iframe 中的元素

一個 Frame 包含了一個執(zhí)行上下文(Execution Context),我們不能跨 Frame 執(zhí)行函數(shù),一個頁面中可以有多個 Frame,主要是通過 iframe 標簽嵌入的生成的。其中在頁面上的大部分函數(shù)其實是 page.mainFrame().xx 的一個簡寫,F(xiàn)rame 是樹狀結(jié)構(gòu),我們可以通過 frame.childFrames() 遍歷到所有的 Frame,如果想在其它 Frame 中執(zhí)行函數(shù)必須獲取到對應的 Frame 才能進行相應的處理

以下是在登錄 188 郵箱時,其登錄窗口其實是嵌入的一個 iframe,以下代碼時我們在獲取 iframe 并進行登錄

(async () => {
    const browser = await puppeteer.launch({headless: false, slowMo: 50});
    const page = await browser.newPage();
    await page.goto('https://www.188.com');
    //點擊使用密碼登錄
    let passwordLogin = await page.waitForXPath('//*[@id="qcode"]/div/div[2]/a');
    await passwordLogin.click();
    for (const frame of page.mainFrame().childFrames()){
        //根據(jù) url 找到登錄頁面對應的 iframe
        if (frame.url().includes('passport.188.com')){
            await frame.type('.dlemail', 'admin@admin.com');
            await frame.type('.dlpwd', '123456');
            await Promise.all([
                frame.click('#dologin'),
                page.waitForNavigation()
            ]);
            break;
        }
    }
    await page.close();
    await browser.close();
})();

文件的上傳和下載

在自動化測試中,經(jīng)常會遇到對于文件的上傳和下載的需求,那么在 Puppeteer 中如何實現(xiàn)呢?

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    //通過 CDP 會話設置下載路徑
    const cdp = await page.target().createCDPSession();
    await cdp.send('Page.setDownloadBehavior', {
        behavior: 'allow', //允許所有下載請求
        downloadPath: 'path/to/download'  //設置下載路徑
    });
    //點擊按鈕觸發(fā)下載
    await (await page.waitForSelector('#someButton')).click();
    //等待文件出現(xiàn),輪訓判斷文件是否出現(xiàn)
    await waitForFile('path/to/download/filename');

    //上傳時對應的 inputElement 必須是<input>元素
    let inputElement = await page.waitForXPath('//input[@type="file"]');
    await inputElement.uploadFile('/path/to/file');
    browser.close();
})();

 

 

模擬選擇文件

點擊元素觸發(fā)選擇文件框,不會顯示,直接返回選擇文件

    const [fileChooser] = await Promise.all([
        page.waitForFileChooser(),
        page.click('#mydropzone'), // some button that triggers file selection
    ]);
    await fileChooser.accept(['D:\\down\\tmp.zip']);

 

 

跳轉(zhuǎn)新 tab 頁處理

在點擊一個按鈕跳轉(zhuǎn)到新的 Tab 頁時會新開一個頁面,這個時候我們?nèi)绾潍@取改頁面對應的 Page 實例呢?可以通過監(jiān)聽 Browser 上的 targetcreated 事件來實現(xiàn),表示有新的頁面創(chuàng)建:

let page = await browser.newPage();
await page.goto(url);
let btn = await page.waitForSelector('#btn');
//在點擊按鈕之前,事先定義一個 Promise,用于返回新 tab 的 Page 對象
const newPagePromise = new Promise(res => 
  browser.once('targetcreated', 
    target => res(target.page())
  )
);
await btn.click();
//點擊按鈕后,等待新tab對象
let newPage = await newPagePromise;

 

 

模擬不同的設備

Puppeteer 提供了模擬不同設備的功能,其中 puppeteer.devices 對象上定義很多設備的配置信息,這些配置信息主要包含 viewport 和 userAgent,然后通過函數(shù) page.emulate 實現(xiàn)不同設備的模擬

const puppeteer = require('puppeteer');
const iPhone = puppeteer.devices['iPhone 6'];
puppeteer.launch().then(async browser => {
  const page = await browser.newPage();
  await page.emulate(iPhone);
  await page.goto('https://www.google.com');
  await browser.close();
});

 

其他信息

官方中文文檔

https://zhaoqize.github.io/puppeteer-api-zh_CN/#/

 

THE END
主站蜘蛛池模板: 苏州杰威尔精密机械有限公司| 无锡耀杰机械有限公司| 江苏 机械制造有限公司| 厦门珀挺机械有限公司| 上海取祥机械有限公司| 诚泰精密机械有限公司| 浙江中意机械有限公司| 河南省起重机有限公司| 黑龙江农业机械有限公司| 洛阳鹏起实业有限公司| 江阴 机械制造有限公司| 济南弘川包装机械有限公司| 常州昊博机械有限公司| 常州杰和机械有限公司| 苏州鸿安机械有限公司| 恒通机械设备有限公司| 山东能源机械有限公司| 德玛克机械有限公司| 东泰机械设备有限公司| 南京 机械有限公司| 河南矿山起重机械有限公司| 张家港白熊机械有限公司| 华电重工装备有限公司| 机械自动化设备有限公司| 海纳机械制造有限公司| 机械装备制造有限公司| 江苏骏马压路机械有限公司| 佳友精密机械有限公司| 北京龙泰机械设备安装有限公司| 洛阳古城机械有限公司| 海益机械配件有限公司| 昆信机械制造有限公司| 人和弹簧机械有限公司| 苏州旭隆机械有限公司| 昆成机械昆山有限公司| 首唐宝生钢铁有限公司| 威图电子机械技术上海有限公司| 上海亚鼎机械有限公司| 上海中造机械有限公司| 沧州 包装机械有限公司| 盐城三益石化机械有限公司| 合肥工程机械有限公司| 玉环锐利机械有限公司| 川崎精密机械有限公司| 中机建重工有限公司| 机械设备有限公司经营范围| 萍乡萍钢安源钢铁有限公司| 华电重工装备有限公司| 昆山机械设备有限公司| 江苏仁达机械有限公司| 东莞市从创机械有限公司| 东莞 纺织机械有限公司| 安徽联塔盛通机械制造有限公司| 宁波市北仑机械制造有限公司| 亿诚机械设备有限公司| 广州易鸿机械有限公司| 广州市日富包装机械有限公司| 江西钧天机械有限公司| 南京机械租赁有限公司| 科尼起重机设备(上海)有限公司| 峰峰合信钢铁有限公司| 上海威图机械有限公司| 中天印刷机械有限公司| 黄石华旦机械制造有限公司| 江阴精力机械有限公司| 山东博宇机械有限公司| 针织机械制造有限公司| 浙江联科机械有限公司| 美心翼申机械有限公司| 无锡市锡恒机械有限公司| 瑞普机械设备有限公司| 东莞兆泰机械设备有限公司| 泉州市力达机械有限公司| 山推机械设备有限公司| 温州液压机械有限公司| 小松山东工程机械有限公司| 新昌县蓝翔机械有限公司| 上海嘉歆包装机械有限公司| 江苏爱斯特机械有限公司怎么样| 德州机械制造有限公司| 杭州恒力机械有限公司| 桐乡合德机械有限公司| 瑞安正博机械有限公司| 无锡钢铁贸易有限公司| 中山自动化机械有限公司| 浙江赛力机械有限公司| 百超玻璃机械有限公司| 郑州明瑞机械设备有限公司| 邯郸纺织机械有限公司| 长沙远洋机械制造有限公司| 济南科华机械有限公司| 书元机械(昆山)有限公司| 杭州农业机械有限公司| 永安五金机械有限公司| 苏州宇钻机械有限公司| 沈阳透平机械有限公司| 杭州中力机械有限公司| 山东荣利中石油机械有限公司| 苏州工业园区机械有限公司| 重庆宏工工程机械有限公司| 机械(无锡)有限公司| 台州中茂机械有限公司| 淄博宏达钢铁有限公司| 郑州志乾机械设备有限公司| 上海 精密机械制造有限公司| 芜湖新传机械有限公司| 建设机械租赁有限公司| 泰山工程机械有限公司| 天津起重机有限公司| 安徽机械设备有限公司| 旭海机械设备有限公司| 常州坤世精密机械有限公司| 鞍山机械重工有限公司| 深圳龙润机械设备有限公司| 至信机械制造有限公司| 东莞市东永源机械有限公司| 日照山东钢铁有限公司| 山东龙起重工有限公司| 重庆数控机械有限公司| 四川晶工机械有限公司| 广东恒联食品机械有限公司| 中信机械制造有限公司| 宁波友杰机械有限公司| 浙江顺得机械有限公司| 安阳亚新钢铁有限公司| 宁波特艾科机械制造有限公司| 莱州市鲁樽机械有限公司| 江苏金韦尔机械有限公司| 广东华鼎机械有限公司| 艾沃意特机械设备制造有限公司| 江苏同正机械制造有限公司| 中原起重机有限公司| 杭州速捷机械有限公司| 宁波华模具机械有限公司| 杭州中力机械设备有限公司| 广州泽比机械设备有限公司| 上海板换机械设备有限公司| 杭州友高精密机械有限公司| 台州通宇变速机械有限公司| 台州市双辉机械设备有限公司| 天烨机械工程有限公司| 昆山烽禾升精密机械有限公司| 鸡西煤矿机械有限公司| 万则盛机械有限公司| 德阳瑞隆机械有限公司| 首都信息发展股份有限公司| 常州小松工程机械有限公司| 济南蓝象数控机械有限公司| 桂林恒达矿山机械有限公司| 海南建设工程机械施工有限公司| 广州文穗塑料机械有限公司| 江苏昆仑钢铁有限公司| 无锡市江益液压机械成套有限公司| 昆山来运机械设备有限公司| 无锡市冶金机械有限公司| 华宇机械制造有限公司| 芜湖良仕机械有限公司| 盐城动力机械有限公司| 苏州恒升机械有限公司| 宁波迪奥机械有限公司| 广州中益机械有限公司| 临沂盛德机械有限公司| 云南工程机械有限公司| 佛山市强源钢铁有限公司| 山西重工机械有限公司| 郑州升升机械有限公司| 江苏鸿泰钢铁有限公司| 富世华机械有限公司| 长春机械制造有限公司| 成都望锦机械有限公司| 泰安越泰机械有限公司| 邢台机械制造有限公司| 郑州中谷机械有限公司| 安徽宇华机械制造有限公司| 东莞市卓越机械有限公司招聘| 有限公司 印刷机械| 宝鸡中车时代工程机械有限公司| 济宁市福瑞得机械有限公司| 郑州鼎盛机械设备有限公司| 滁州富达机械电子有限公司| 枣庄金正钢铁有限公司| 起帆电线电缆有限公司| 浙江弘润机械制造有限公司| 山西海威钢铁有限公司| 南京神鹏机械设备有限公司| 合肥二宫机械有限公司| 天津起重机有限公司| 天永机械上海有限公司| 上海轩特机械设备有限公司| 东莞市亚龙玻璃机械有限公司| 北京润达机械有限公司| 浙江兴盛机械有限公司| 三吉机械制造有限公司| 广州华研精密机械有限公司| 山东起重机厂有限公司| 震德塑料机械有限公司| 合肥机械制造有限公司| 上海嘉倍德塑胶机械有限公司| 浙江上石化机械有限公司| 沈阳斗山工程机械有限公司| 富士和机械工业有限公司| 天重江天重工有限公司| 新乐华宝塑料机械有限公司| 惠州德钢机械有限公司| 青州三和机械有限公司| 宁波安德机械有限公司| 宁波润达机械有限公司| 江西四通重工机械有限公司| 昆山裕邦机械有限公司| 河南万合机械有限公司| 石家庄三一众力工程机械有限公司| 三菱重工机械有限公司| 安徽佶龙机械有限公司| 万隆机械制造有限公司| 力 机械 有限公司| 迎阳无纺机械有限公司| 广东汕头机械有限公司| 青州市拓新机械设备有限公司| 福建省晋江市和盛机械有限公司| 南昌全球机械有限公司| 保定东利机械制造有限公司| 太原 机械 有限公司| 上海鸿尔机械有限公司| 西帕机械 杭州 有限公司| 南通艾迈特机械有限公司| 大丰联鑫钢铁有限公司| 新麦机械 无锡 有限公司| 杭州科豪机械有限公司| 三一能源重工有限公司| 威埃姆输送机械有限公司| 东莞市欧西曼机械设备有限公司| 武安裕华钢铁有限公司| 河南明天机械有限公司| 广州而众机械有限公司| 环保机械设备有限公司| 北仑精密机械有限公司| 东莞数控机械有限公司招聘| 美心翼申机械有限公司| 富华重工有限公司老板| 新乡市佳盛振动机械有限公司| 沈阳沈飞航宇机械制造有限公司| 蚌埠柳工机械有限公司| 东莞通盛机械有限公司| 青岛隆硕农牧机械制造有限公司| 东莞市欧西曼机械设备有限公司| 上海法德机械设备有限公司| 台州亚格机械有限公司| 江苏中热机械设备有限公司| 湖南天拓重工有限公司| 常州龙鹏机械有限公司| 苏州华致鑫精密机械有限公司| 大连工程机械有限公司| 荏原机械烟台有限公司| 东莞市智科精密机械有限公司| 泉州市机械有限公司| 必佳乐纺织机械有限公司| 南京康尼精密机械有限公司| 重庆德运机械制造有限公司| 福建兴翼机械有限公司| 中船重工海空智能装备有限公司| 靖江 机械有限公司| 无锡港口机械有限公司| 浙江晨雕机械有限公司| 天津 机械 有限公司| 福建敏捷机械有限公司| 郑州一本机械设备有限公司| 景德镇 机械有限公司| 无锡市机械有限公司| 浙江超洋机械有限公司| 太重天津滨海重型机械有限公司| 上海制高机械有限公司| 苏州 机械 有限公司| 石嘴山钢铁有限公司| 南京斯坦福机械有限公司| 昌顺田机械有限公司| 海星机械制造有限公司| 东莞麒麟机械有限公司| 曼透平机械常州有限公司| 福建机械制造有限公司| 广州宇械机械设备有限公司| 瑞丰机械有限公司招聘| 常州制药机械有限公司| 江苏联顺机械有限公司| 友联机械制造有限公司| 温州天马食品包装机械制造有限公司| 龙海起重工具有限公司| 大连橡塑机械有限公司| 注册机械设备有限公司有什么要求| 佛山市包装机械有限公司招聘| 东莞市益彩机械有限公司| 山东硕诚机械有限公司| 常州液压机械有限公司| 济南力机械设备有限公司| 东莞市合辉精密机械设备有限公司| 俊杰机械(深圳)有限公司| 郑州市同鼎机械设备有限公司| 湖州市湖州机械有限公司| 河南省力神机械有限公司| 青岛德维机械制造有限公司| 东阳市佳先机械制造有限公司| 陕西 机械 有限公司| 中实洛阳重型机械有限公司实习报告| 重庆起重机有限公司| 力邦 机械有限公司| 重庆阿德耐特动力机械有限公司| 浩江机械制造有限公司| 宝捷精密机械有限公司| 山东泰瑞汽车机械电器有限公司| 湖北鄂钢扬子重型机械制造有限公司| 珠海市机械设备有限公司| 龙工(上海)机械有限公司| 上海新麦机械设备制造有限公司| 东莞兆泰机械设备有限公司| 南兴木工机械有限公司| 重村钢模机械工业苏州有限公司| 阿特拉斯工程机械有限公司| 马鞍山 重工机械有限公司| 温州铸鼎机械有限公司| 石家庄机械设备有限公司| 嘉兴市宏丰机械有限公司| 河南万泰机械有限公司| 潍坊机械设备有限公司| 洛阳洛北机械有限公司| 杭州容瑞机械技术有限公司| 合肥永升机械有限公司| 上海 乐 机械有限公司| 安徽艾特巴机械制造有限公司| 青岛青科重工有限公司| 无锡环保机械有限公司| 佛山市中牌机械有限公司| 翰林机械制造有限公司| 浙江吉隆机械有限公司| 日照机械有限公司电话| 东莞市泽源机械有限公司| 台州欧玮机械有限公司| 新乡市辰威机械有限公司| 河北工程机械有限公司| 沈阳机械设备有限公司| 大方起重机械有限公司| 建筑机械租赁有限公司| 上海嘉峥机械有限公司| 江山重工机械有限公司| 重庆工程机械有限公司| 浙江网路崛起有限公司| 上海恒麦食品机械有限公司| 茂名重力石化机械制造有限公司| 当阳 机械 有限公司| 上海中机械有限公司| 泉州机械制造有限公司| 启英机械设备有限公司| 广东木工机械有限公司| 山鑫机械制造有限公司| 科瑞思机械有限公司| 丹阳荣嘉精密机械有限公司| 烟台浩阳机械有限公司| 上海美捷伦包装机械有限公司| 山东佳通机械有限公司| 兴科机械设备有限公司| 上海传动机械有限公司| 安徽远鸿机械自动化有限公司| 纳百川机械有限公司| 苏州欧鼎机械有限公司| 柳州市宏华机械有限公司| 西子重工机械有限公司| 江苏天泽精工机械有限公司| 广东粤东机械实业有限公司| 南阳奇丰机械有限公司| 洛阳市机械有限公司| 中山力劲机械有限公司| 江苏祥达机械制造有限公司| 上海天祥制药机械有限公司| 佛山市宝索机械制造有限公司| 江苏中科机械有限公司| 无锡凯希迪斯机械有限公司| 杭州凯邦机械有限公司| 广州普耐柯数控机械有限公司| 上海冠龙阀门机械有限公司| 佛山市机械制造有限公司| 广州宇械机械设备有限公司| 江苏正兴建设机械有限公司| 宁波奥晟机械有限公司| 山东运泰机械有限公司| 北京食之秀机械设备有限公司| 广州田田机械设备有限公司| 斗山机械工程有限公司| 威图电子机械技术有限公司| 天元机械制造有限公司| 常州市菲德机械部件有限公司| 顺德机械设备有限公司| 苏州伟鼎机械设备有限公司| 上海久协机械设备有限公司| 伯曼机械制造有限公司| 重庆辉昌机械设备有限公司| 北京市机械施工有限公司| 联德精密机械有限公司| 山西建龙钢铁有限公司地址| 凯岛起重机械有限公司| 四川宏华友信石油机械有限公司| 玉环中本机械有限公司| 昆山 精密机械有限公司| 潍坊华耀磁电机械有限公司| 北京液压机械有限公司| 上海品一机械有限公司| 阿波罗机械有限公司| 江苏同正机械制造有限公司| 南京橡塑机械有限公司| 深圳起航电商有限公司| 苏州勤堡精密机械有限公司| 江苏润山机械有限公司| 荣辰机械制造有限公司| 汉纬尔机械有限公司| 冠龙阀门机械有限公司| 青岛迪恩机械制造有限公司| 临汾市机械有限公司| 昆明机械设备有限公司| 南京机械制造有限公司| 青岛云龙纺织机械有限公司| 营口隆仁重工有限公司| 宁波特艾科机械制造有限公司| 江苏万宝机械有限公司| 湘潭 机械制造有限公司| 新乡市海纳筛分机械制造有限公司| 旭海机械设备有限公司| 青州市拓新机械设备有限公司| 南阳奇丰机械有限公司| 广东玻璃机械有限公司| 宜昌机械设备有限公司| 台湾晁群机械有限公司| 南京金顿重工机械有限公司| 上海沛愉机械制造有限公司| 宁联机械制造有限公司| 河北建筑机械有限公司| 海城机械制造有限公司| 旭朗机械设备有限公司| 乌鲁木齐机械设备有限公司| 天津华悦包装机械有限公司| 浙江印刷机械有限公司| 德州仁信印染机械有限公司| 永晨 机械有限公司| 河南奥创机械设备有限公司| 青岛国森机械有限公司| 川崎精密机械有限公司| 台湾正河源机械配件有限公司| 诸城并恒机械有限公司| 常州久压久机械制造有限公司| 招商局重工江苏有限公司| 浙江保龙机械有限公司| 连云港钢铁有限公司| 溧阳申特钢铁有限公司| 南京力霸起重设备机械有限公司| 佛山恒力泰机械有限公司| 东莞市亿德机械设备有限公司| 上海贯博起重设备有限公司| 渤海重工管道有限公司| 宁波丰州机械有限公司| 武汉轻工机械有限公司| 上海光机械制造有限公司| 安徽中科光电色选机械有限公司| 成都富江机械制造有限公司| 东莞大同机械有限公司| 广州通泽机械有限公司| 奥华机械制造有限公司| 河南一重起重机有限公司| 天津钢铁贸易有限公司| 常州度盛机械有限公司| 徐州 机械有限公司| 浙江海蜜机械有限公司| 创丰机械有限公司招| 上海威图机械有限公司| 河南小松工程机械有限公司| 迈安德食品机械有限公司| 山东河山机械有限公司| 湖北京山机械有限公司| 江苏长虹涂装机械有限公司| 泉州金鹰机械有限公司| 邯郸市复液液压机械有限公司| 丰创机械有限公司招聘| 上海树新机械有限公司| 食品有限公司起名大全| 福州优利机械有限公司| 赛奥机械 广州 有限公司| 上海嘉亿机械有限公司| 上海舜业钢铁有限公司| 南京润森工程机械有限公司| 山东机械进出口有限公司| 上海松 机械制造有限公司| 宝德机械国际有限公司| 东远机械昆山有限公司| 上海起帆电线电缆有限公司| 山西北方机械有限公司| 友嘉精密机械有限公司| 温州市友田包装机械有限公司| 上海输送机械设备有限公司| 东莞高盟机械有限公司| 长沙威重化工机械有限公司| 常州塑料机械有限公司| 苏州锐豪机械制造有限公司| 市瑞港机械有限公司| 广州市旭朗机械设备有限公司| 大连 机械制造有限公司| 广州宇械机械设备有限公司| 昆山河海精密机械有限公司| 福建东亚机械有限公司| 石家庄工程机械有限公司| 玻海玻璃机械有限公司| 江苏宇达机械有限公司| 瑞安 机械有限公司| 潍坊大众机械有限公司| 浙江轻工机械有限公司| 西安凌通机械有限公司| 住友重机械有限公司| 恒联食品机械有限公司| 沈阳冶金机械有限公司| 苏州德扬数控机械有限公司| 长沙凯瑞重工机械有限公司| 金昶泰机械设备有限公司| 徐州挖掘机械有限公司| 中恒通机械制造有限公司| 江苏液压机械有限公司| 佐竹机械 苏州 有限公司| 福建轻工机械有限公司| 杭州机械制造有限公司| 宝鸡石油机械有限公司| 华电曹妃甸重工装备有限公司| 河南泰兴粮油机械设备有限公司| 精密机械设备有限公司| 江苏海陵机械有限公司| 惠州机械设备有限公司| 济南铭机械设备有限公司| 合肥液压机械有限公司| 潍坊润鑫机械有限公司| 合肥市春晖机械制造有限公司| 海力机械设备有限公司| 无锡巨神起重机有限公司| 艾沃意特机械设备制造有限公司| 浙江兄弟包装机械有限公司| 温州精宇机械有限公司| 苏州精雕精密机械工程有限公司| 长江润发机械有限公司| 郑州市郑鑫机械制造有限公司| 郑州米格机械有限公司| 昆山大风机械有限公司| 力顺源机械有限公司| 河北普阳钢铁有限公司| 烟台金土源机械化工程有限公司| 漳州南方机械有限公司| 青岛德尔德机械有限公司| 铜梁君卓机械有限公司| 广东华冠钢铁有限公司| 河南卫华起重机有限公司| 重庆包装机械有限公司| 广州市力净洗涤机械有限公司| 上海派协包装机械有限公司| 塑料机械 有限公司| 东莞市五全机械有限公司| 南京创力传动机械有限公司| 广州园林机械有限公司| 汕头华机械有限公司| 上海磊友成套机械设备有限公司| 潍坊凯隆机械有限公司| 长沙轻工机械有限公司| 武汉萱裕机械有限公司| 珠海 机械 有限公司| 银三环机械有限公司| 莱德桑机械有限公司| 无锡市浦尚精密机械有限公司| 广东达诚机械有限公司| 永川海通机械有限公司| 兰州机械设备有限公司| 日照瑞荣机械有限公司| 粤北联合钢铁有限公司| 仙游东亚机械有限公司| 康铖机械设备有限公司| 装饰工程有限公司起名| 江苏鸡煤机械有限公司| 机械设备有限公司招聘| 三和机械制造有限公司| 中天印刷机械有限公司| 常州锐展机械有限公司| 自贡机械制造有限公司| 永鑫机械制造有限公司| 上海磊友成套机械设备有限公司| 江苏贝斯特数控机械有限公司| 山东天力液压机械有限公司| 浙江海蜜机械有限公司| 上海梅山钢铁有限公司| 山东常美机械有限公司| 山发机械制造有限公司| 福建南方路面机械有限公司| 东莞市恒生机械制造有限公司| 长城重型机械制造有限公司| 温州华珍机械有限公司| 苏州盈合机械有限公司| 萨瑟克机械有限公司| 常州小松工程机械有限公司招聘| 深圳海邻机械设备有限公司| 徐州液压机械制造有限公司| 济南包装机械械有限公司| 广东明华机械有限公司| 浙江机械设备有限公司| 联五金机械有限公司| 河北煤矿机械有限公司| 上海宇减传动机械有限公司| 上海齐耀螺杆机械有限公司| 重庆彪汉机械有限公司| 天津西门子机械传动有限公司| 上海航发机械有限公司| 山东九环机械有限公司| 八达重工机械有限公司| 台盛机械设备有限公司| 首唐宝生钢铁有限公司| 台盛机械设备有限公司| 承德建龙钢铁有限公司| 吉林大华机械有限公司| 大丰联鑫钢铁有限公司| 上海服装机械有限公司| 输送机械设备有限公司| 济南诺斯机械有限公司| 大连典石精密机械有限公司| 扬州液压机械有限公司| 成都经纬机械制造有限公司| 铜陵富鑫钢铁有限公司| 芜湖富鑫钢铁有限公司| 深圳巨涛机械设备有限公司| 广州乾能机械制造有限公司| 南京重霸起重设备有限公司| 乐清机械设备有限公司| 浙江超伟机械有限公司| 上海 包装机械 有限公司| 北京农业机械有限公司| 山东凯澳机械有限公司| 广州机械设备租赁有限公司| 辛集市 机械有限公司| 山东永健机械有限公司| 青岛中鸿重型机械有限公司| 河南铁山起重设备有限公司| 上海陵城机械有限公司| 青岛华华机械有限公司| 合心机械制造有限公司| 江苏诺森重工有限公司| 福建信达机械有限公司| 京西重工(北京)有限公司| 青岛岛宇机械有限公司| 曲阜机械制造有限公司| 保定锐腾机械制造有限公司| 河北犀牛民用机械有限公司| 河南正亚机械设备制造有限公司| 山东日照钢铁有限公司| 苏州海陆重工有限公司| 河南宝润机械有限公司| 宏晟机械设备有限公司| 德川机械制造有限公司| 重庆双腾机械制造有限公司| 郑州恒科机械有限公司| 动机械设备有限公司| 苏州起重机械有限公司| 江西柳工机械设备有限公司| 无锡市 机械有限公司| 河北巨牛机械有限公司| 浙江达青机械有限公司| 东莞市和明机械有限公司| 临沂铸信机械有限公司| 新力机械制造有限公司| 山西天巨重工机械有限公司| 淄博宏达钢铁有限公司|