Xml WGET-仅使用一个HTTP请求从同一源获取多个XPath
我需要解析一个HTML表及其“头”。这两个都包含在同一个URL中。这就是我到目前为止所拥有的: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
#!/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
<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 | ....