久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

分享一款懶人必備的Python爬蟲神器

前言
今天把最近的一個應(yīng)用做好了,測試了一下運行沒有問題,剩下的就是檢驗一下結(jié)果如何.從光譜到Lab值通常使用matlab中的roo2lab(),不過經(jīng)過我最近的測試發(fā)現(xiàn)轉(zhuǎn)換的結(jié)果并不理想,而且這個轉(zhuǎn)化的代碼也不是我寫的所以另尋他法,找到了下面這個網(wǎng)頁。

分享一款懶人必備的Python爬蟲神器
動手
有了這個網(wǎng)頁,很簡單就想到去解析.然后很快找到了這個api,可以看到用post提交表單請求就可以返回結(jié)果

分享一款懶人必備的Python爬蟲神器
于是一番操作,修改form表單,構(gòu)造傳入的spectrum,但是最終請求得到的卻是一個頁面,并不是想要的json.然后許久沒寫爬蟲的我直接惱火,想到自動化工具模擬操作.可是selenium很難用而且還得去找瀏覽器新版本的驅(qū)動,隨后直接搜索一番,發(fā)現(xiàn)了這個神器—playwright
首先老規(guī)矩去它的首頁看看教程

分享一款懶人必備的Python爬蟲神器
接著安裝一下playwright以及瀏覽器的驅(qū)動
pip install pytest-playwright
playwright install
第二步的時候很慢,所以我只等他下載好了chrome和ffmpeg直接就ctrl+c停止了,畢竟我也用不著其他的瀏覽器驅(qū)動。
然后稍微瀏覽一下這個文檔功能非常豐富,不過我用到的功能也不多,接下來的使用才是真正適合我們懶人的.
記住一行代碼
python -m playwright codegen xxx.com
其中xxx.com就是我們的目標網(wǎng)址,運行后會創(chuàng)建一個熟悉的自動化頁面,然后我們就進行一些我們想要的操作,比如設(shè)置開始的最小波長為400nm,然后觀察以及光源改為D65/10.一系列操作后會看到對應(yīng)的代碼已經(jīng)生成好了

分享一款懶人必備的Python爬蟲神器
至今為止我還沒有寫一行代碼,不過構(gòu)造輸入的光譜還是得自己來的
把這一段代碼復(fù)制下來,然后自己寫構(gòu)造輸入的函數(shù)(就幾行),然后通過選擇器(直接左鍵元素復(fù)制xpath)得到lab值,這樣目標就搞定了
整體代碼如下
import time
from playwright.sync_api import Playwright, sync_playwright, expect
import?numpy?as?np

data_test=np.loadtxt('./dist/1_res.csv',delimiter=',')

def get_str(arr):
    arr_str=""
    for i in arr:
        arr_str+=str(format(i,".2f"))+"\r\n"
????return?arr_str

labs=[]

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
????context?=?browser.new_context()

    # Open new page
????page?=?context.new_page()

    # Go to https://www.qtccolor.com/secaiku/tool/spectrum
????page.goto("https://www.qtccolor.com/secaiku/tool/spectrum")

    # Click div[role="tab"]:has-text("光譜數(shù)據(jù)")
????page.locator("div[role=\"tab\"]:has-text(\"光譜數(shù)據(jù)\")").click()

    # Click text=最小波長:nm
??? page.locator("text=最小波長:nm").click()

    # Fill [placeholder="\33 80"]
????page.locator("[placeholder=\"\\33?80\"]").fill("400")

    # Select 1964
????page.locator("select[name=\"obs\"]").select_option("1964")

    # Select D65
    page.locator("select[name=\"ill\"]").select_option("D65")
    # Fill textarea[name="spectrum"]
    for i in range(len(data_test)):
        inputs=get_str(data_test[i,:])
        # Click textarea[name="spectrum"]
        page.locator("textarea[name=\"spectrum\"]").click()
        page.locator("textarea[name=\"spectrum\"]").press("Control+a")
????????page.locator("textarea[name=\"spectrum\"]").fill(inputs)

        # Click button:has-text("轉(zhuǎn)換顏色")
        page.locator("button:has-text(\"轉(zhuǎn)換顏色\")").click()
        time.sleep(1)
        # Click text=Lab0.000.000.00 >> td >> nth=1
        L=float(page.locator('xpath=//*[@id="scroll_container"]/div[1]/div/div[2]/table/tbody/tr[2]/td[2]').inner_text())
        # Click text=Lab0.000.000.00 >> td >> nth=2
        a=float(page.locator('xpath=//*[@id="scroll_container"]/div[1]/div/div[2]/table/tbody/tr[2]/td[3]').inner_text())
        # Click text=Lab0.000.000.00 >> td >> nth=3
        b=float(page.locator('xpath=//*[@id="scroll_container"]/div[1]/div/div[2]/table/tbody/tr[2]/td[4]').inner_text())
        print(L,a,b)
        labs.append([L,a,b])
    # --------------------- 
   context.close()
????browser.close()

with sync_playwright() as playwright:
    run(playwright)
    np.savetxt('./1_lab_res.csv',labs,delimiter=",")
可以說從安裝到實現(xiàn)就幾分鐘,而且特別容易上手,我第一次用也一下就能實現(xiàn)效果

分享一款懶人必備的Python爬蟲神器
剩下的就是簡單的寫個函數(shù)計算色差啥的就沒難度了.
最后

大廠出品果然不同,使用它在不考慮運行效率(有異步但是我懶得看了)的情況下可以輕松實現(xiàn)復(fù)雜操作,懶人最愛!

來源:https://juejin.cn/post/7140542063061237773(侵刪)

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機構(gòu)!

    1. 主站蜘蛛池模板: 吉安市| 绥阳县| 确山县| 屏东市| 广河县| 筠连县| 北票市| 兰溪市| 南安市| 九龙坡区| 永修县| 嵊泗县| 嘉荫县| 平遥县| 疏附县| 伊川县| 苗栗县| 虞城县| 栾城县| 怀集县| 杭锦旗| 义马市| 克什克腾旗| 平和县| 桃江县| 安宁市| 大厂| 古浪县| 西和县| 广南县| 六枝特区| 庆阳市| 铜梁县| 建宁县| 定州市| 丰顺县| 潼关县| 西青区| 黄浦区| 高青县| 梁山县|