简体   繁体   English

从iframe获取价值并将其放入变量

[英]Get value from iframe and put it into variable

I'm working on a project using a PLC controller that is monitoring a process. 我正在使用正在监视过程的PLC控制器进行项目。 I have a HTML page now that refreshes itself and shows values of registers. 我现在有一个HTML页面,该页面刷新自身并显示寄存器的值。

I am using: <iframe src="readreg.htm;reg-R1;fmt-INT;rfs-5"> </iframe> 我正在使用: <iframe src="readreg.htm;reg-R1;fmt-INT;rfs-5"> </iframe>
The code above reads the value of register R1 from controller's inner page readreg.htm, which I can't see and enter (it's hide somewhere). 上面的代码从控制器的内页readreg.htm中读取寄存器R1的值,我看不到并输入(它隐藏在某个地方)。 Iframe returns a value(number) but of course in frame. Iframe返回一个值(数字),但当然是在框架中。 Iframe works fine. iframe工作正常。

I want to get the value from iframe (number from register) and put it into variable so I can create a chart or simply do some math equations with values from registers. 我想从iframe(寄存器中的数字)中获取值并将其放入变量中,这样我就可以创建图表或简单地用寄存器中的值做一些数学方程式。

I can't use php, only javascript. 我不能使用php,只能使用javascript。
I've tried to do it for weeks but every solution doesn't work. 我已经尝试了数周,但每种解决方案都行不通。 Hope you can help me. 希望您能够帮助我。

from __future__ import print_function
import re
import marisa_trie
import os, glob

class wordcut(object):
    def __init__(self, removeRepeat=True, stopDictionary="", removeSpaces=True, minLength=1, stopNumber=False, removeNonCharacter=False, caseSensitive=True, ngram=(1,1), negation=False):
    d = []
    dir = os.path.dirname(__file__)

    # load dictionary
    for file in [f for f in os.listdir(dir + '/dict/') if f.endswith('.txt')]:
        with open(dir + '/dict/' + file) as f:
            for line in f:
                d.append(line.decode('utf-8').rstrip())

    # load negation listdir
    self.negationDict = []
    if negation:
        with open(dir + '/dict/negation.txt') as f:
            for line in f:
                self.negationDict.append(line.decode('utf-8').rstrip())

    self.stopword = False
    self.stopdict = []
    if(stopDictionary is not ""):
        self.stopword = True
        with open(stopDictionary) as f:
            for line in f:
                self.stopdict.append(line.decode('utf-8').rstrip())

    self.trie = marisa_trie.Trie(d)
    self.removeRepeat = removeRepeat
    self.stopNumber = stopNumber
    self.removeSpaces = removeSpaces
    self.minLength = minLength
    self.removeNonCharacter = removeNonCharacter
    self.caseSensitive = caseSensitive
    self.ngram = ngram
    self.negation = negation
    self.onNegation = False

def determine(self, word):
    if self.stopNumber and word.isdigit():
        return False

    if self.removeSpaces and word.isspace():
        return False

    if len(word) < self.minLength:
        return False

    if self.removeNonCharacter:
        match = re.search(u"[0-9A-Za-z\u0E00-\u0E7F]+", word)
        if not match:
            return False

    return True

# Find maximum matching in Trie if match return id else return -1
def searchTrie(self, word):
    # remove negation if see a space
    if(word[0:1] == " "):
        self.onNegation = False

    # check latin words
    match = re.search(u"[A-Za-z\d]*", word)
    if match.group(0):
        if not self.caseSensitive:
            return match.group(0).lower()
        else:
            return match.group(0)

    # check number
    match = re.search(u"[\d]*", word)
    if match.group(0):
        return match.group(0)

    longest = 0
    maxData = None

    for x in range(20):
        if word[0:x] in self.trie:
            longest = len(word[0:x])
            maxData = word[0:x]

    if longest > 20:
        for data in self.trie.keys(word[0:longest]):
            if(len(data) > longest):
                if data in word[0:len(data)]:
                    wordLength = 0
                    longest = len(data)
                    maxData = data


    if maxData:
        try:
            # Special check for case like ๆ
            if word[len(maxData)] == u'ๆ':
                return word[0:(len(maxData) + 1)]
            else:
                return maxData
        except:
            return maxData
    else:
        return -1;

def transform(self, wordArray):
    for dd in self.stopdict:
        try:
            if self.caseSensitive:
                wordArray.remove(dd)
            else:
                wordArray.remove(dd.lower())
        except ValueError:
            pass

    return wordArray

# c = sentence which represent as char
# N = number of character
def find_segment(self, c):
    i = 0
    N = len(c)
    arr = []
    while(i < N):
        j = self.searchTrie(c[i:N])
        if(j == -1):
            if(self.removeRepeat is False or c[i] != c[i - 1]):
                arr.append(c[i])
                i = i + 1
            else:
                i = i + 1
        else:
            k = j
            if self.negation:
                if self.onNegation:
                    k = 'NOT_' + j

                if j in self.negationDict:
                    self.onNegation = True

            arr.append(k)
            i = i + len(j)
    return arr;

def find_ngrams(self, input_list, n):
    return zip(*[input_list[i:] for i in range(n)])

def segment(self, c):
    result = self.find_segment(c)
    if self.stopword:
        result = self.transform(result)

    result = [x for x in result if self.determine(x)]

    lastresult = []
    for x in xrange(self.ngram[0], self.ngram[1]+1):
        for r in self.find_ngrams(result, x):
            match = re.search(u"[A-Za-z\d]+", ''.join(r))
            if not match:
                lastresult.append(''.join(r))
            else:
                if self.negation:
                    lastresult.append(''.join(r))
                else:
                    lastresult.append(' '.join(r))
    return lastresult

ช่วยอธิบายโด๊ดแต่ละบรรทัดให้หน่อย ช่วยอธิบายโด๊ดแต่ละบรรทัดให้หน่อย

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM