Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml WGET-仅使用一个HTTP请求从同一源获取多个XPath_Xml_Bash_Shell_Xpath_Wget - Fatal编程技术网

Xml WGET-仅使用一个HTTP请求从同一源获取多个XPath

Xml WGET-仅使用一个HTTP请求从同一源获取多个XPath,xml,bash,shell,xpath,wget,Xml,Bash,Shell,Xpath,Wget,我需要解析一个HTML表及其“头”。这两个都包含在同一个URL中。这就是我到目前为止所拥有的: #!/bin/bash name_query="html/body/div[3]/div/div[1]/div[3]/div[1]/h1/text()" # Use xargs to TRIM result. header=$(wget -O - "https://example.com/section-1/name-1/financial-data/" | xmllint --html

我需要解析一个HTML表及其“头”。这两个都包含在同一个URL中。这就是我到目前为止所拥有的:

#!/bin/bash

name_query="html/body/div[3]/div/div[1]/div[3]/div[1]/h1/text()"

# Use xargs to TRIM result.
header=$(wget -O - "https://example.com/section-1/name-1/financial-data/" |
    xmllint --html --xpath "$name_query" - 2>/dev/null |
    xargs)

wget -O - "https://example.com/section-1/name-1/financial-data/" |
    xmllint --html --xpath '//*[@id="financial-data"]/div/table/tbody' - 2>/dev/null |
    xmlstarlet ed --subnode "/tbody/tr" --type elem -n td -v "$header" >> /Applications/parser/output.txt
这提出了两项要求:

  • 获取名称并将其传递给变量
    $header
  • 获取表并附加子节点
    $header
  • 因此,这会将以下内容写入我的output.txt文件:

    <tbody>
    
                        <tr class="text-right">
                          <td class="text-left">Sep 08, 2017</td>
                          <td>4605.16</td>     
                          <td>4661.00</td>
                          <td>4075.18</td>
                          <td>4228.75</td>
                          <td>2,700,890,000</td>
                          <td>76,220,200,000</td>
                          <td>Name 1</td>
                        </tr>
    
                        <tr class="text-right">
                          <td class="text-left">Sep 07, 2017</td>
                          <td>4589.14</td>     
                          <td>4655.04</td>
                          <td>4491.33</td>
                          <td>4599.88</td>
                          <td>1,844,620,000</td>
                          <td>75,945,000,000</td>
                          <td>Name 1</td>
                        </tr>
    ...
    </tbody>
    
    这不起作用,并产生以下错误:

    ./test: line 8: <!DOCTYPE: command not found
    ./test: line 10: <!DOCTYPE: command not found
    -:1.1: Document is empty
    

    /test:line 8:您忘了告诉bash您在用$content变量做什么

    bash认为$content中包含的是命令

    使用


    对!@法布里西奥工作起来很有魅力。谢谢:)
    ./test: line 8: <!DOCTYPE: command not found
    ./test: line 10: <!DOCTYPE: command not found
    -:1.1: Document is empty
    
    #!/bin/bash
    
    title_query="html/body/div[3]/div/div[1]/div[3]/div[1]/h1/text()"
    
    content=$(wget -O - "https://coinmarketcap.com/currencies/bitcoin/historical-data/")
    
    # Use xargs to TRIM result.
    header=$(xmllint --html --xpath "$title_query" - <<<"$content" 2>/dev/null | xargs)
    
    xmllint --html --xpath '//*[@id="financial-data"]/div/table/tbody' - <<<"$content" 2>/dev/null |
        xmlstarlet ed --subnode "/tbody/tr" --type elem -n td -v "$header" >> /Applications/parser/output.txt
    
    echo $content | ....