分页: 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
:Effort 不要沉下去

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);

大神指教,不要沉,不要沉。 :Aadterboom :Aadterboom

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
试验一下