最近在使用HttpClient抓取京东的数据时。爬取爬到一半突然出现一个错误。如下:
查找了一些网上资料,说地址中涉及了特殊字符,如‘|’‘&’等。所以不能直接用String代替URI来访问。必须采用%0xXX方式来替代特殊字符。但这种办法不直观。所以只能先把String转成URL,再能过URL生成URI的方法来解决问题。代码如下:
URI uri = null; try { URL url2 = new URL(strUrl); uri = new URI(url2.getProtocol(), url2.getHost(), url2.getPath(), url2.getQuery(), null); } catch (MalformedURLException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); }
// 创建httpGet请求对象,设置url地址
HttpGet httpGet = new HttpGet(uri);
即可解决这个问题