2013-02-26 66 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