我使用WWW :: Mechanize庫來從網站刮取內容。但是,我注意到網頁的原始HTML源代碼和WWW :: Mechanize解析的內容不同。因此,腳本中的一些功能會被破壞。Perl WWW ::機械化解析內容問題?
所以,這裏是腳本(一個子集,只是爲了演示錯誤/問題)
#! /usr/bin/perl
use WWW::Mechanize;
use warnings;
$mech=WWW::Mechanize->new();
$mech->stack_depth(0);
$url="http://www.example.com";
$mech->get($url);
print $mech->content;
短期和簡單的代碼,它會連接到網站和檢索整個HTML頁面。
我運行腳本並將輸出重定向到文本文件,以便我可以分析它們。
perl test.pl >> source_code.txt
現在,當我比較source_code.txt和由瀏覽器(Firefox)中顯示的網站的實際的源代碼,也有不同之處。
例如:
<tr>
<td nowrap="nowrap">This is Some Text</td>
<td align="right"><a href="http://example.com?value=key">Some more Text</a></td>
</tr><tr>
上述源代碼是什麼是在瀏覽器中觀察到的。 (查看頁面源代碼功能)
然而,在文本文件中,source_code.txt(由WWW ::機械化生成)
它表明:
<tr>
<td nowrap="nowrap">This is some text</td>
<td align="right">This is some more text</td>
</tr><tr>
正如你所看到的,錨標籤它被嵌套在第二組標籤之間被刪除。
這是已知問題還是我需要使用$ mech-> content以外的其他東西來查看源代碼?
謝謝。
我會首先檢查用戶代理是否對服務器返回的內容產生影響。如果您在'new()'調用中添加'agent =>'Windows IE 6''會發生什麼? – LHMathies 2012-08-15 10:36:23