用perl语言get下来网页汉字是乱码

软件和网站开发以及相关技术探讨
回复
sstal
帖子: 10
注册时间: 2017-05-26 23:07
系统: ubuntu
联系:

用perl语言get下来网页汉字是乱码

#1

帖子 sstal » 2017-05-26 23:14

代码: 全选

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编码的,为什么不能正确获取汉字内容呢?大神解答。感激不尽
Stay hungry,Stay foolish
sstal
帖子: 10
注册时间: 2017-05-26 23:07
系统: ubuntu
联系:

Re: 用perl语言get下来网页汉字是乱码

#2

帖子 sstal » 2017-05-27 9:14

:Effort 不要沉下去
Stay hungry,Stay foolish
onlylove
论坛版主
帖子: 5208
注册时间: 2007-01-14 16:23

Re: 用perl语言get下来网页汉字是乱码

#3

帖子 onlylove » 2017-05-27 14:30

代码: 全选

use strict;
use LWP;
my $ua=LWP::UserAgent->new;
my $res=$ua->get("http://www.taobao.com");
print $res->content;
sstal
帖子: 10
注册时间: 2017-05-26 23:07
系统: ubuntu
联系:

Re: 用perl语言get下来网页汉字是乱码

#4

帖子 sstal » 2017-05-28 8:34

淘宝网也许可以 但是有的网站就是不行啊 你试试我的那个事例网站 看能不能行 我现在电脑不在身边。
Stay hungry,Stay foolish
谢宝良
帖子: 1983
注册时间: 2010-05-01 21:23

Re: 用perl语言get下来网页汉字是乱码

#5

帖子 谢宝良 » 2017-05-28 17:18

先保存为html文件,然后Writer打开,再另存为txt文件。文字就保存下来。如果直接使用文本浏览器打开html,还是乱码的。提取当然是乱码。

<meta http-equiv="content-type" content="text/html; charset=gbk">
谢宝良
帖子: 1983
注册时间: 2010-05-01 21:23

Re: 用perl语言get下来网页汉字是乱码

#6

帖子 谢宝良 » 2017-05-28 17:42

试过了,用这命令能转化成正常文件

enconv -L zh_CN -x UTF-8
sstal
帖子: 10
注册时间: 2017-05-26 23:07
系统: ubuntu
联系:

Re: 用perl语言get下来网页汉字是乱码

#7

帖子 sstal » 2017-05-31 20:33

网页源码里面有这么一句话,<meta http-equiv="content-type" content="text/html; charset=gb2312"/>,为什么我用这个语句不行呢:
my $res5 = decode("gb2312",$res->content);

大神指教,不要沉,不要沉。 :Aadterboom :Aadterboom
Stay hungry,Stay foolish
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: 用perl语言get下来网页汉字是乱码

#8

帖子 HuntXu » 2017-06-01 9:35

试试看

代码: 全选

encode("utf8", decode("gbk", $res->content));
HUNT Unfortunately No Talent...
sstal
帖子: 10
注册时间: 2017-05-26 23:07
系统: ubuntu
联系:

Re: 用perl语言get下来网页汉字是乱码

#9

帖子 sstal » 2017-06-01 19:38

HuntXu 写了:试试看

代码: 全选

encode("utf8", decode("gbk", $res->content));
感谢hunt,但是我还是比较迷惑,为什么网页gb2312,为什么用你的语句就可以呢?
Stay hungry,Stay foolish
sstal
帖子: 10
注册时间: 2017-05-26 23:07
系统: ubuntu
联系:

Re: 用perl语言get下来网页汉字是乱码

#10

帖子 sstal » 2017-06-01 19:48

HuntXu,
Stay hungry,Stay foolish
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: 用perl语言get下来网页汉字是乱码

#11

帖子 HuntXu » 2017-06-02 9:21

sstal 写了:
HuntXu 写了:试试看

代码: 全选

encode("utf8", decode("gbk", $res->content));
感谢hunt,但是我还是比较迷惑,为什么网页gb2312,为什么用你的语句就可以呢?
其实我也只是在以前的脚本里找到写过这么一句而已...

我记得perl的Encode::decode是只会转换成perl的内部格式而已,需要再用encode转才能输出。你也可以试试Encode模块里有个from_to。具体perldoc Encode看看吧
HUNT Unfortunately No Talent...
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 用perl语言get下来网页汉字是乱码

#12

帖子 poloshiao » 2017-06-02 10:13

HuntXu,
如果你的意思是呼叫 HuntXu
在帳號前面加上 @ :

@HuntXu
sstal
帖子: 10
注册时间: 2017-05-26 23:07
系统: ubuntu
联系:

Re: 用perl语言get下来网页汉字是乱码

#13

帖子 sstal » 2017-06-02 13:11

@poloshiao, 是吗?这样有用吗@sstal
Stay hungry,Stay foolish
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 用perl语言get下来网页汉字是乱码

#14

帖子 poloshiao » 2017-06-02 17:05

@poloshiao, 是吗?
試試
@poloshiao
後面不要加內容 (單獨一行)

參閱
viewtopic.php?p=3187145#p3187145
sstal
帖子: 10
注册时间: 2017-05-26 23:07
系统: ubuntu
联系:

Re: 用perl语言get下来网页汉字是乱码

#15

帖子 sstal » 2017-06-05 20:57

@sstal
试验一下
Stay hungry,Stay foolish
回复