2013-02-26 65 views
0

我有在转换线在HTML到CSV

<a href="http://www.google.com>Date: 25.02.2013 10:30 Name: Google</a><br> 

我试图写一个PowerShell脚本,将得到该链接,日期,时间,名称和格式链接的HTML文件把它们以CSV格式(链接,日期,时间,名称)

以下将给我的链接,但没有其他的信息,我只是想念什么?正则表达式的工作方式,尽管在寻找名字的那个字符串中放置“Name:”会很有帮助。

$input_path = 'C:\temp\myfile.html' 
$output_file = 'C:\temp\myfile.csv' 
$regex_link = '([a-zA-Z]{4})://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)’ 
$regex_date = '\d{2}\.\d{2}\.\d{4}' 
$regex_time = '\d{2}:\d{2}' 
$regex_name = 'Name:\s([\w]*)' 
$myVar = select-string -Path $input_path -Pattern $regex_link, $regex_date, $regex_time, $regex_name -AllMatches| % { $_.Matches } | % { $_.Value } 
$myVar 

回答

0

这是不干净的解决方案我想,但它在我的测试工作:

$input_path = 'C:\temp\myfile.html' 
$output_file = 'C:\temp\myfile.csv' 

(Get-Content $input_path) -match "href" | % { 
$data = ($_ -replace '(?:.*)href="(.*?)">Date:\s*([\w\.]+)\s*([\w\:]+)\s*Name:\s*(.*)</a>(?:.*)' , '$1;$2;$3;$4').Split(";") 
New-Object psobject -Property @{ 
    "Link" = $data[0].Trim() 
    "Date" = $data[1].Trim() 
    "Time" = $data[2].Trim() 
    "Name" = $data[3].Trim() 
    } 
} | Select-Object Link, Date, Time, Name | Export-Csv $output_file -NoTypeInformation 

Myfile.html:

<html> 
<body> 
asdsanfkj 
djaksl 
sadjklas 
<a href="http://www.google.com">Date: 25.02.2013 10:30 Name: Googledas adka kasjiw</a><br> 
sadsadmdsa 
<a href="http://www.google2.com">Date: 22.22.2222 20:20 Name: Google2asd addasd </a><br> 
sajl 
dasjdsa 
asd 
</body> 
</html> 

Myfile.csv:

"Link","Date","Time","Name" 
"http://www.google.com","25.02.2013","10:30","Googledas adka kasjiw" 
"http://www.google2.com","22.22.2222","20:20","Google2asd addasd" 
+0

这是我在运行你的代码后得到的输出文件。 ''“链接”,“日期”,“时间”,“名称” “True”,,,' – gjettison 2013-02-26 20:18:06

+0

该代码在PS2.0上执行得很好用“样本”和结果查看更新后的答案。如果它不起作用,你应该提供一个更大的样本(最好是完整的html文件,删除/替换敏感数据)。如果你提供了一个完整的样本,记住不要替换特殊字符,如果有的话。 – 2013-02-26 20:31:47

+0

我是一个dork,我忘了这个文件是没有换行生成的,运行你的代码后用'
'替换'
\ n'提供了期望的结果......你是明星!谢谢! – gjettison 2013-02-26 20:41:58