2013-02-08 30 views
0

我有一些醜陋的HTML電子郵件形式發送到我的程序是這樣的:在身體中提取文本,是不是與HTML標記的一部分:: TreeBuilder作爲

<html> 
    <head> 
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
    </head> 
    <body> 
     Saved search results.<br> 
    <br> 
    Name: 'Some splunk search' <br> 
    Query Terms: 'tag=foo NOT BAR=\&quot;Boom\&quot;' <br> 
    Link to results: <a href="https://foo/search/blahblahblah"> 
    https://foo/search/blahblahblah</a> 
    <br> 
    <br> 
    <table border="1"> 

...剪斷爲了簡潔休息。

我能夠使用HTML :: TreeBuilder拉出表格元素,但無法弄清楚如何從上面拉出「名稱:」「查詢條款」而不訴諸於其他方式。

一個$根 - >上面看起來像轉儲:

<html> @0 
    <head> @0.0 
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> @0.0.0 
    <body> @0.1 
    <p> @0.1.0 (IMPLICIT) 
    " Saved search results. " 
    <br /> @0.1.0.1 
    <br /> @0.1.0.2 
    " Name: 'Some splunk search' " 
    <br /> @0.1.0.4 
    " Query Terms: 'tag=foo NOT BAR=\"Boom\"" 

那麼,有沒有辦法讓@ 0.1.0.2之間,並@ 0.1.0.4

感謝赤裸裸的文字! 託德

回答

0

如果有文本的模式,可能更容易使用HTML解析和正則表達式的組合。

my $body_text = $body->as_text(skip_dels => 1); 

my ($name) = ($body_text =~ m#Name: '([^']+)'#s); 
my ($query_terms) = ($body_text =~ m#Query Terms: '([^']+)'#s); 
+0

是的......這就是我目前所做的,但它感覺不對。似乎應該有辦法將這些線路抽出來。轉儲甚至爲他們跳過一個數字。 (0.1.0.2,文本,然後0.1.0.4)感謝您的答覆,雖然... – Todd 2013-02-08 20:43:25

相關問題