HtmlUnit爬虫解决url中文

接触爬虫也有好一段时间了,刚开始用的是htmlunit,后来因为对js的兼容性问题,用过一阵子selenium,觉得selenium还是蛮直观也很顺手,但最近爬个报表爬得好费劲,用selenium折腾好久都没搞出来。实在没辙了,又听从同事建议,改用htmlunit试试,没想到还真有新发现,现在记录下,为自己长个记性,也希望能跟有需要的分享下。总体来说,爬虫是个小事,可每次爬总能碰到问题让你觉得不顺,就像林子大了,什么鸟都有,互联网大了,奇葩网页总能让你碰到。

问题描述:页面1,有两个输入框和一个按钮;输入框是为了设置查询报表的条件,分别是“日期”及“报表类型",然后点击按钮之后,就会弹出一张满足条件的报表,称为页面2。看着蛮常规,于是我按正常套路去获得两个输入框进行赋值,然后获得按钮,利用page2=(HtmlPage)button.click(),应该就可以获得弹出的页面了。但问题是总获取不到,并提示500error,服务器错误,可我在原页面进行设置点击,却可以正常弹出报表,说明服务器是好的。

解决方法:后来仔细检查发现这个跟以前做过的有点点不一样,就是页面1中form的action属性中含有中文。虽然也不能确定是不是这个url中文引起的,但还是要想办法来排查或证明。于是在获得输入框和按钮之后,我再把页面中的form取到,加上一句form.setAttribution("action","16进制url"),也就是将form提交的“中文url”转成“16进制url”后再重新赋值给form,这样就可以保证button.click()之后,参数可以提交给“16进制url”进行处理,没想到还真解决了。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值