网络爬虫学习笔记——GET方法下几种常用情况

来源:互联网 发布:淘宝文案策划待遇 编辑:程序博客网 时间:2024/06/05 21:13

在网页抓取的过程中,GET方法是最基础的方法,很多网站都是主要由GET方法请求组成的(当然也有很变态的,这种网站的开发人员辛苦了,一般下一个页面访问需要的参数是上个页面中源码的内容)。下面以GET方法简单介绍些常遇到的情况。

 

1、  参数提交

参数提交并不是POST方法的专利,GET方法也可以实现对应的参数传递。这种主要是在请求的地址中进行传值,最常见的传值应该是翻页。如下图中在百度中搜索“csdn”,主要换页进行的传值是以每页的条数来进行累加的。

在一些简单网站中,许多的登录也是从地址URL中进行传值从而实现登录。一旦传值错误,很多情况下会导致返回404,这也就使我们无法正常的返回需要的结果。

 

 

2、  页面跳转

当我们在打开一个页面时,有的页面可能会提示你“正在跳转,请稍后……”或者页面在打开后又会有很刷新的痕迹的跳转的痕迹。这就是有些网站实现了跳转,这种多发于在原有的网页的基础上进行了改版,但保留原入口的方法。这种跳转的方法我们用F12已经无法完整的获取其整个过程,这就需要我们用fiddler来捕获浏览器的整个过程。(具体fiddler的使用方法网上很多,也比较简单,主要是配置fiddler能兼容各种情况即可)


在上图中,302的即为跳转的页面,这个访问将跳转为下面对应的200的网址。在Apache的方法中,一般是默认帮我们实现了跳转的过程,但有时我们也要获取跳转之前的相关信息,就必须要先设定好不提供跳转。

下面是设定跳转的方法,可以尝试设定TRUE和FALSE两种情况下获得的结果有什么不同。

 

import java.io.IOException;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.ParseException;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;/****** *  * @author luffy * @deprecated 简单的get请求方法 */public class Test {public static void main(String[] args){CloseableHttpClient httpClient=HttpClients.createDefault();//类似于浏览器核心的工具,是获取源码的主要工具HttpGet getmethod = new HttpGet("http://www.weibo.com/csdn");//定义获取的GET方法HttpResponse httpresponse = null;//禁止重定向配置getmethod.setConfig(RequestConfig.custom().setRedirectsEnabled(true).build());try {httpresponse = httpClient.execute(getmethod);//开始获取源码,返回的结果除了源码外,还有其他一些信息} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}HttpEntity entity = httpresponse.getEntity();//从结果中获取源码的实体String out = "";try {out = EntityUtils.toString(entity);//将源码实体转化为字符串} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("此时网页的状态码为:" +httpresponse.getStatusLine());System.out.print("网页源码为:" + out);}}

 

 

3、  refer的设定

这是网页请求中明确路径的一种方法。在网页访问追踪中,我们往往能发现有Refer这个字段。它确定了当前页面访问前的上个页面的具体地址。根据这个信息,我们可以知道在fiddler抓取的流程中,上线两个访问地址并不一定是有关系。这就避免了我们抓取了过多无用的页面。而且在有的网站中,它的同样的URL可能有多种用途,就需要制定相应的refer,才能正确返回我们所需的页面。

0 0