明白了,你的需求是从HTML表格中提取`<td>`标签下的内容,并进行导出。我们可以修改代码,以便提取所有`<td>`标签中的文本内容,并将其转换为CSV格式。以下是如何完成这个任务:
1. **找到并提取所有<td>标签的内容**。
2. **将提取的内容转换为CSV格式**。
3. **创建一个下载链接并自动点击下载**。
以下是更新后的代码:
// 找到你需要导出的信息,例如所有的 <td> 标签内容
const data = Array.from(document.querySelectorAll('td'))
.map(td => td.textContent.trim()) // 去掉两边的空白字符
// 将数据重新分组,每组由若干个单元格组成(假设每行有固定数量的列)
const numberOfColumns = 5; // 修改为你的表格的实际列数
const rows = [];
for (let i = 0; i < data.length; i += numberOfColumns) {
rows.push(data.slice(i, i + numberOfColumns));
}
// 将数据转换为CSV格式
const csvContent = "data:text/csv;charset=utf-8,"
+ rows.map(row => row.join(",")).join("\n");
// 创建一个隐藏的下载链接并点击它以触发下载
const encodedUri = encodeURI(csvContent);
const link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "table_data.csv");
document.body.appendChild(link); // Required for FF
link.click();
document.body.removeChild(link);
### 解释一下代码:
1. **获取所有的`<td>`标签内容**:
const data = Array.from(document.querySelectorAll('td')).map(td => td.textContent.trim());
这行代码提取所有`<td>`标签的文本内容,并去除两边的空白字符。
2. **重新分组**:
const numberOfColumns = 5; // 修改为你的表格的实际列数
const rows = [];
for (let i = 0; i < data.length; i += numberOfColumns) {
rows.push(data.slice(i, i + numberOfColumns));
}
假设表格每行有固定数量的列,这段代码将所有`<td>`标签的内容重新分组为多行。
3. **将数据转换为CSV格式**:
const csvContent = "data:text/csv;charset=utf-8,"
+ rows.map(row => row.join(",")).join("\n");
4. **创建下载链接并自动点击**:
const encodedUri = encodeURI(csvContent);
const link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "table_data.csv");
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
这段代码会生成一个CSV文件并自动开始下载。你可以将这段代码放在Tampermonkey脚本中,让它在特定网页上运行,从而实现所需功能。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |