java 爬虫在 netbeans 里运行和单独运行结果不一样

在做内容测试的时候,发现我的爬虫(前些文章略有提及)在 netbeans 里面能够成功爬取网页内容,而单独运行时,给定一个 url,爬到的网页却与在浏览器里面打开 url 的网页完全不一样,这是一个很诡异的问题。我在相应位置增加代码,把网页写入某一个文件。结果发现,在 netbeans 里运行和单独运行两次写的文件的编码不一样,一个是 GBK 的编码,一个是 UTF-8  的编码,(我希望爬虫以 UTF-8 的方式运行,考虑到程序里面的字符串和数据库里面的字符串对应,都应该使用 UTF-8 编码)。于是,我猜测,在 netbeans 里面是以 UTF-8 编码方式运行的,而单独运行是以 GBK 的编码方式运行的,当从数据库(UTF-8编码存储)读入一个带中文的 url 时,前者能够正确处理,而后者因为采用 GBK 编码,它以 GBK 的眼光去看待这个 UTF-8 编码的 url,就造成了 url 的扭曲。

如,我想抓取的 url 是 

http://news.baidu.com/ns?ct=1&rn=20&ie=utf-8&bs="湖北法雷奥车灯有限公司"&rsv_bp=1&sr=0&cl=2&f=8&prevct=no&word="湖北法雷奥车灯有限公司"&tn=newstitle&inputT=0&companyId=21510

它在数据库中以 UTF-8 的方式存储,结果读入一个运行环境为 GBK 语言环境的程序里面,程序会以 GBK 的方式去识别这个 url ,那么,原始 url 在进入程序后,就变成了 

http://news.baidu.com/ns?ct=1&rn=20&ie=utf-8&bs="某些字符"&rsv_bp=1&sr=0&cl=2&f=8&prevct=no&word="某些字符"&tn=newstitle&inputT=0&companyId=21510

它把原先我要在百度新闻里面搜索的关键串:“湖北法雷奥车灯有限公司”变成了 “某些字符”。(这里的“某些字符”并不是这个字符串本身,而确实指某些字符)

显然它并不能按我所想的去访问某个网页,因此,相当于它会去搜索一些稀奇古怪的内容。

在单独运行一个 jar 时,加上 -Dfile.encodeing=UTF-8  的选项,即是选择使用 UTF-8 的环境去运行这个程序。

如:

java -Dfile.encoding=UTF-8 -jar Spider.jar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值