分页: 1 / 1
用perl语言get下来网页汉字是乱码
发表于 : 2017-05-26 23:14
由 sstal
代码: 全选
use strict;
use LWP::Simple;
use HTTP::Cookies;
use Encode;
my $browser = LWP::UserAgent->new;
#$browser->agent("Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0");
my $res;
my $cookie_jar = HTTP::Cookies->new(
file=>'lwp_cookies_taobao.txt',
autosave=>1,
ignore_discard=>1);
$browser->cookie_jar($cookie_jar);
my $login_url ;
$login_url = 'http://quote.eastmoney.com/sh600031.html?StockCode=600031';
$res = $browser->get($login_url);
my $res1 = encode("GBK",decode("gb2312",$res->content));
my $res2 = encode("GBK",decode("utf-8",$res->content));
my $res21 = encode("gb2312",decode("utf-8",$res->content));
my $res3 = decode("utf-8",$res->content);
my $res4 = decode("GBK",$res->content);
my $res5 = decode("gb2312",$res->content);
本人用以上代码获取网页内容,为什么获取到的汉字都有问题,怀疑是汉字编码问题,但是用decode和encode都试遍了还是不行,这个实例网页好像是utf-8编码的,为什么不能正确获取汉字内容呢?大神解答。感激不尽
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-05-27 9:14
由 sstal
不要沉下去
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-05-27 14:30
由 onlylove
代码: 全选
use strict;
use LWP;
my $ua=LWP::UserAgent->new;
my $res=$ua->get("http://www.taobao.com");
print $res->content;
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-05-28 8:34
由 sstal
淘宝网也许可以 但是有的网站就是不行啊 你试试我的那个事例网站 看能不能行 我现在电脑不在身边。
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-05-28 17:18
由 谢宝良
先保存为html文件,然后Writer打开,再另存为txt文件。文字就保存下来。如果直接使用文本浏览器打开html,还是乱码的。提取当然是乱码。
<meta http-equiv="content-type" content="text/html; charset=gbk">
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-05-28 17:42
由 谢宝良
试过了,用这命令能转化成正常文件
enconv -L zh_CN -x UTF-8
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-05-31 20:33
由 sstal
网页源码里面有这么一句话,<meta http-equiv="content-type" content="text/html; charset=gb2312"/>,为什么我用这个语句不行呢:
my $res5 = decode("gb2312",$res->content);
大神指教,不要沉,不要沉。
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-06-01 9:35
由 HuntXu
试试看
代码: 全选
encode("utf8", decode("gbk", $res->content));
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-06-01 19:38
由 sstal
HuntXu 写了:试试看
代码: 全选
encode("utf8", decode("gbk", $res->content));
感谢hunt,但是我还是比较迷惑,为什么网页gb2312,为什么用你的语句就可以呢?
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-06-01 19:48
由 sstal
HuntXu,
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-06-02 9:21
由 HuntXu
sstal 写了:HuntXu 写了:试试看
代码: 全选
encode("utf8", decode("gbk", $res->content));
感谢hunt,但是我还是比较迷惑,为什么网页gb2312,为什么用你的语句就可以呢?
其实我也只是在以前的脚本里找到写过这么一句而已...
我记得perl的Encode::decode是只会转换成perl的内部格式而已,需要再用encode转才能输出。你也可以试试Encode模块里有个from_to。具体perldoc Encode看看吧
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-06-02 10:13
由 poloshiao
HuntXu,
如果你的意思是呼叫 HuntXu
在帳號前面加上 @ :
@HuntXu
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-06-02 13:11
由 sstal
@poloshiao, 是吗?这样有用吗@sstal
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-06-02 17:05
由 poloshiao
@poloshiao, 是吗?
試試
@poloshiao
後面不要加內容 (單獨一行)
參閱
viewtopic.php?p=3187145#p3187145
Re: 用perl语言get下来网页汉字是乱码
发表于 : 2017-06-05 20:57
由 sstal
@sstal
试验一下