最近写了一段爬虫程序,在这个过程中遇到了一些小问题。这些问题看起来可能很简单,甚至很基础。但没办法,我原来是学通信的,对某些知识本来了解就不够。现在把这些问题总结一些,并给出相应的解答和解决方法。
为什么需要代理服务器?
-保密,A访问C,代理:A通过B访问C;
-桥梁,访问国内不让访问的外国网址,如翻墙;
-加快访问速度,如:VPN加速器和CDN服务器的反向代理。请求网页服务时,怎么样看返回的数据是否是JSON格式?
-右键,查看“审查元素”中的Network;查看第一时间段的数据中是否包含了全部的文本数据,若包含了,就不是JSON格式,若不包含,看其他时间段返回的数据中是否有JSON格式的数据,若有,则是JSON格式。前端的html,js,css干嘛用的?
-html:实现静态网页的编程语言
-js:脚本语言,可执行的程序;
-css:页面整体框架
其他的ajax…是以上三个的扩展或变形HTTP状态码表示什么?
-是用以表示网页服务器HTTP响应状态的3位数字代码
-常用:200 OK; 400 Bad Request 请求错误;404 没有找到httpClient报cookie rejected错误的解决方法(报错内容:
Cookie rejected: "$Version=0; JSSearchModel=0; $Path=/; $Domain=zhaopin.com")
-出错原因:httpclient请求默认需要传cookie的。之所以报这样的错,是因为访问的时候没有加Cookie。
-解决方法:设置忽略cookie
-httpClient3.0如下:client.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES);
-httpClient4.0如下:
public HttpClient getHttpClient(){
DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getCookieSpecs().register("easy", csf);
httpClient.getParams().setParameter(ClientPNames.COOKIE_POLICY, "easy");
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 2000);
return httpClient;
}
// customer cookie policy, ignore cookie check
CookieSpecFactory csf = new CookieSpecFactory() {
public CookieSpec newInstance(HttpParams params) {
return new BrowserCompatSpec() {
@Override
public void validate(Cookie cookie, CookieOrigin origin)
throws MalformedCookieException {
// Oh, I am easy
}};}};
绝对路径和相对路径?
-绝对路径:是从盘符开始的路径,形如,C:\windows\system32\cmd.exe
-相对路径:是从当前路径开始的路径,假如当前路径为C:\windows
要描述上述路径,只需输入system32\cmd.exe。实际上,严格的相对路径写法应为.\system32\cmd.exe导架包怎样在程序中访问架包的txt等文件?
-利用方法getResourceAsStream(),它是一个标准方法,用来打开一个外部输入文件。文件的位置取决于类加载器Classload,而标准的类加载器从classpath开始搜索。代码如下:
//返回读取指定资源的输入流 resource是当前工程下的一个存放res.txt的package
InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s="";
while((s=br.readLine())!=null)
System.out.println(s);