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

本文介绍了使用GET方法进行网页抓取时常见的几种情况,包括参数提交、页面跳转及refer设定等,提供了实例代码说明如何处理这些情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网页抓取的过程中,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 block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		HttpEntity entity = httpresponse.getEntity();//从结果中获取源码的实体
		
		
		String out = "";
		
		
		try {
			out = EntityUtils.toString(entity);//将源码实体转化为字符串
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		System.out.println("此时网页的状态码为:" +httpresponse.getStatusLine());
		System.out.print("网页源码为:" + out);
		
		
		
	}
}

 

 

3、  refer的设定

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

这个错误信息 "E: Unable to locate package screen" 表示系统无法找到名为 "screen" 的软件包。有几种可能的原因导致这个问题。首先,确保你的系统已经连接到互联网并正常工作。然后,确认你的软件源列表(sources.list)配置正确,以便系统可以找到所需的软件包。你可以通过运行 "apt-get update" 命令来更新软件源并刷新可用软件包的列表。如果你仍然无法找到所需的软件包,可能是因为软件包名称不正确或者没有可用的软件包。在这种情况下,你可以尝试搜索其他可用的软件包或者查看是否有其他仓库或来源可用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [《python3网络爬虫开发实战》学习笔记::selenium——xpath:Unable to locate element](https://download.csdn.net/download/weixin_38656337/14044639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [解决Debian系统错误:E: Unable to locate package vim](https://blog.csdn.net/fgx_123456/article/details/107945738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [linux screen 的命令使用](https://blog.csdn.net/weixin_44425647/article/details/115371508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值