当前位置: 首页 > 面试题库 >

Node.js puppeteer-从复杂的txt文件中获取内容

皇甫琛
2023-03-14
问题内容

如何在puppeteer中下载,访问和处理复杂的txt文件?

我可以访问xml文件[Node.js puppeteer-下载/访问xml文件并处理内容),如下所示:

await page.goto(myPage, {waitUntil: 'load'});

const newPage = await page.evaluate(() => {

    var columns = document.getElementsByTagName("VALUEA");

    var values = {"values":[]};

    for(let f in columns){
        values.values.push(columns[f].innerText);
    }

    return JSON.stringify(values);

});

console.log(JSON.parse(newPage))

这给了我想要的值。但是,如果我要访问如下所示的txt文件…,并且要进行测试以获取所有“ VALUEA”,我会得到:

{"values":[null,null,null]}

那就是我正在查看的TXT文件:

<XYZ-DOCUMENT>117.txt : 20180824
<XYZ-HEADER>117.hdr.sgml : 20180824
<VALUE00>20180824153107
VALUE01:        117
VALUE02:    ABC

COMPANY:

    COMPANY DATA:   
        VALUE03:            Some Company
        VALUE04:            777

    BUSINESS ADDRESS:   
        VALUE05:        Some street
        VALUE06:            Some city

</XYZ-HEADER>
<DOCUMENT>
<VALUE07>ABC
<SEQUENCE>1
<FILENAME>primary_doc.xml
<TEXT>
<XML>
<?xml version="1.0" encoding="UTF-8"?>
<Submission xmlns="http://www.xyz.it/abc/" xmlns:com="http://www.xyz.it/abc/common">
  <headerData>
    <VALUE08>ABC</VALUE08>
    <xxxInfo>
      <xxx>
        <credentials>
          <VALUE09>777</VALUE09>
          <VALUE10>XXXXXXXX</VALUE10>
        </credentials>
      </xxx>
      <VALUE11>06-30-2018</VALUE11>
    </xxxInfo>
  </headerData>
  <bodyData>
    <coverPage>
      <VALUE12>06-30-2018</VALUE12>
      <VALUE13>1</VALUE13>
      <amendmentInfo>
        <VALUE14>STRAWBERRIES</VALUE14>
      </amendmentInfo>
      <xxxManager>
        <VALUE15>Corp</VALUE15>
        <address>
          <VALUE16:street1>MOUNTAIN STREET</VALUE16:street1>
          <VALUE17:city>NEW YORK</VALUE17:city>
        </address>
      </xxxManager>
      <provideInfoForInstruction5>N</provideInfoForInstruction5>
    </coverPage>
  </bodyData>
</Submission>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>INFORMATION TABLE
<SEQUENCE>2
<FILENAME>xml_xyz.xml
<TEXT>
<XML>
<?xml version="1.0" encoding="UTF-8"?>
<informationTable xmlns="http://www.xyz.it/abc/informationtable" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance">
<infoTable>
<VALUEA>Company A</VALUEA>
<VALUEB>INC</VALUEB>
<shParent>
<VALUEC>123</VALUEC>
<VALUED>AB</VALUED>
</shParent>
</infoTable>
<infoTable>
<VALUEA>Company B</VALUEA>
<VALUEB>LTD</VALUEB>
<shParent>
<VALUEC>567</VALUEC>
<VALUED>ST</VALUED>
</shParent>
</infoTable>

...

</informationTable>
</XML>
</TEXT>
</DOCUMENT>
</XYZ-DOCUMENT>

最后,我要获取所有VALUE(主要是VALUEA,VALUEB,VALUEC,VALUEC)!怎么做?


问题答案:

您可以采用如下方案来从文本内容VALUEAVALUEBVALUEC,和VALUED

const example = await page.evaluate( () =>
{
    const page = document.createElement( 'html' );
    const page_content = document.body.textContent;

    page.innerHTML = page_content;

    return {
        'VALUEA' : Array.from( page.getElementsByTagName( 'VALUEA' ), e => e.textContent ),
        'VALUEB' : Array.from( page.getElementsByTagName( 'VALUEB' ), e => e.textContent ),
        'VALUEC' : Array.from( page.getElementsByTagName( 'VALUEC' ), e => e.textContent ),
        'VALUED' : Array.from( page.getElementsByTagName( 'VALUED' ), e => e.textContent )
    };
});

console.log( example.VALUEA[0] ); // Company A
console.log( example.VALUEA[1] ); // Company B

console.log( example.VALUEB[0] ); // INC
console.log( example.VALUEB[1] ); // LTD

console.log( example.VALUEC[0] ); // 123
console.log( example.VALUEC[1] ); // 567

console.log( example.VALUED[0] ); // AB
console.log( example.VALUED[1] ); // ST


 类似资料:
  • 我的项目中有这样一段代码: 没有错误,应用程序运行正常,但是变量中从来没有任何文本,我确信txt文件中有文本! 我已经尝试过不同的方法来读取文本文件(使用BufferedReader、Scanner、FileInputStream和FileReader),但都不起作用。 另外,我几乎可以肯定问题不在变量中,因为我尝试通过代码(使用运行时)打开文件,它正常打开了正确的文件。 好的,我尝试添加,但是仍

  • 假设我有一个txt文件中的文本: bla bla bla bla bla bla 标题 Lorem ipsum dolor sat amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut laboure et dolore magna aliqua。 Ut enim ad minim veniam, 条件 bla

  • 问题内容: 当我在浏览器中使用以下URL时,它将提示我下载带有JSOn内容的文本文件。 https://chart.googleapis.com/chart?cht=p3&chs=250x100&chd=t:60,40&chl=Hello|World&chof=json (单击上面的URL查看下载的文件内容) 现在,我想创建一个php页面。我希望当我调用此php页面时,它应调用上述URL并从文件中

  • 我目前开始编写一个可以加载不同游戏的棋盘游戏游乐场。我将这些游戏存储在名为config.txt的文件中,但我无法访问它。首先,我从我最喜欢的文件方法开始: 但当我建造的时候。jar文件,它停止工作。因为显而易见的原因。所以我四处看看,发现了关于使用getResourceAsStream(String s)方法的建议。因此,我将代码更改为以下方式: 但在这里我被卡住了。无论我如何调整文件地址(尝试了

  • 所以,我试图让我的程序从文本文件中读入一个结构数组,它编译得很好,但看起来并没有真正读入值?...我不知道为什么。这是代码的相关部分: 这是txt文件(标题:Planets.txt) 水星120 50 500 12.1 30 2金星120 50 500 29.1 30 6地球120 50 500 32.2 30 7月亮120 15 50 5.3 30 2火星120 50 500 12.2 30 4

  • 我已经创建了一个程序,其中有一个名为groups.txt.的文件这个文件包含一个名称列表。要删除一个组,它必须存在于文件中。我使用Scanner方法在每一行中搜索名称。如果它包含该行,它将val设置为1。这会触发val==1条件。在此块期间我想做的,是尝试从groups.txt文件中删除groupName。为此,我创建了一个名为TempFile的新txt文件,它复制了groups.txtEXCEP