网络爬虫学习笔记——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,才能正确返回我们所需的页面。
- 网络爬虫学习笔记——GET方法下几种常用情况
- Spider网络爬虫学习——通过Get、Post方法直接抓取网页内容
- 网络爬虫学习笔记——网络爬虫简介
- 网络爬虫之get方法
- 网络爬虫 学习笔记
- 网络爬虫开发常用方法
- 学习笔记—Python网络爬虫(一)
- 学习笔记—Python网络爬虫(二)
- [Python]网络爬虫学习笔记,爬取东南大学SEU-wlan的流量使用情况
- python网络爬虫学习笔记
- 网络爬虫学习笔记(一)
- Python--网络爬虫学习笔记
- python网络爬虫学习笔记
- 爬虫 —— 学习笔记
- 网络爬虫系列笔记(4)——Scrapy爬虫
- 网络爬虫学习笔记(一) 网络爬虫概述
- 学习笔记——Android常用方法
- Spring学习笔记—常用注入方法
- c++的随机数
- Error:No signature of method: java.lang.Integer.call() is applicable for arg
- 动态规划——看似dp的贪心问题最大乘积(蓝桥杯试题集)
- linux进程调度 - 组织进程
- Android Material Design兼容库控件使用(一)
- 网络爬虫学习笔记——GET方法下几种常用情况
- 新增非空约束字段在不同版本中的演进
- *[Lintcode]k Sum II
- DatabaseTest
- 死循环-内存溢出
- python中的闭包与装饰器
- 第十一周项目1——二叉树算法验证(2)二叉树构造算法验证
- 分布式事务之2PC和3PC
- git同步本地仓库和远程仓库