通过post向指定URL地址访问爬取数据

post请求网站数据爬取!!!Python学习笔记! 对于刚开始学习Python的童鞋来说,对于网站的爬取可能很模糊,对网站的请求方式也不太了解。下面先简单介绍一下几种常见的网站请求方式,get、post 阅读详情

 一:直接上代码,控制层

//这是下面要用的HOST,里面的数据是F12在页面看到的,例如:127.0.0.1:8088
private final static String HOST = PropertiesUtil.getDocking("url:端口号");
@RequestMapping("findPackageDetails")
    public void findPackageDetails() {

        // 根据固定地址获取cookie
String param ="USERNAME=用户名&PASSWORD=密码";
//其中USERNAME和PASSWORD是在网址上找到的定义名字(F12可以看到)
 String result = HttpRequestWdqy.getNewToken("URL(这里填写固定的URL)", param);
        String cookie = result.substring(0, 82);(result是返回的cookie,根据情况截取部分)
        cookie = cookie + "JSESSIONID=0000pMWMIp_OmSU2-on7_IbMOR7:1c2e6s2rt;";
           //cookie后面添加的是我访问地址固定添加的部分,看地址上面的要求

//方法一    //下面这个是访问本系统的另一个地址,和上面的是一个系统,所以用到cookie。
        String params = "FWBID=P20190109174053505";//需要传的数据
        String url = "这里填写固定的URL";
        // 获取签约团队列表,通过这种方法返回的是string类型。因为感觉不好处理,用了方法二
        String results = HttpRequestWdqy.httpPost(url, params, cookie);
        String infoList = JSONObject.parseObject(results).getString("rows");
           //rows是返回的results串里面的key值。


 //方法二   //下面这个是访问本系统的另一个地址,和上面的是一个系统,所以用到cookie。
        String Url = "这里填写固定的URL";
        CloseableHttpClient httpClient = HttpClients.createDefault();
        ArrayList<NameValue> arrayList = new ArrayList<>();
        arrayList.add(new NameValue("FWBID", "P20190109174053505"));//需要传的数
//通过下面这个方法返回的是JsonResult 格式的,里面的HOST在最上面定义
JsonResult httpPost4 = HttpRequestWd.httpPost(httpClient,HOST,Url,null,arrayList,cookie);
       //通过下面的方法处理返回的页面数据
        Document parse = Jsoup.parse(httpPost4.getMessage());
//因为需要爬取的数据在标签script中,所以使用下面的方法,获取所有的script标签
        Elements elementsByAttributeValue11 = parse.getElementsByTag("script");
        String str = "";
//下面设置一个循环,查找符合的数据
        for (Element ele : elementsByAttributeValue11) {
           //把数据转成text格式
            String text = ele.data();
            //通过里面的数据判断:/**服务项数组*/(这个是其中一个script标签中特有的)
            if (text.contains("/**服务项数组*/")) {
                //然后截取其中[]包裹的数据。完成
                str = text.substring(text.indexOf("["), text.indexOf("]") + 1);
            }
        }
    }

二:下面是上一个使用到的方法:

1.HttpRequestWdqy.getNewToken 获取cookie;

/**
	 * 获取cookie
	 *
	 * @author lgs
	 */
	public static String getNewToken(String url, String param) {
		String cookie = "";
		try {
			@SuppressWarnings("resource")
			HttpClient httpclient = new DefaultHttpClient();
			//创建登录请求的URL
			// 登录url
			HttpPost httpost = new HttpPost("登录地址");
			//创建登录时候所需要传递的数据
	List<NameValuePair> nvp = new ArrayList<NameValuePair>();
	//此处的key值对应你在浏览器上获取的
	nvp.add(new BasicNameValuePair("USERNAME", "YTJJJSKFQDJJSQWSFWZXGLY"));
	nvp.add(new BasicNameValuePair("PASSWORD", "e10adc3949ba59abbe56e057f20f883e"));
			String sCharSet = "utf-8";
			httpost.setEntity(new UrlEncodedFormEntity(nvp, sCharSet));

			HttpResponse response;
			String value = null;
			response = httpclient.execute(httpost);
			// post请求成功后的返回值
			String str = EntityUtils.toString(response.getEntity());
			System.out.println(str);

			//获取response中的cookie值
			Header[] headers = response.getHeaders("Set-Cookie");
			//取出所有的cookie值
			for (int i = 0; i < headers.length; i++) {
				value = headers[i].getValue();
				cookie += value;
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return cookie;
	}

    2.HttpRequestWdqy.httpPost 方法一:获取页面数据;

/**
	 * 获取列表
	 *
	 * @author lgs
	 */
	public static String httpPost(String url, String param, String cookie) {
		PrintWriter out = null;
		BufferedReader in = null;
		String result = "";
		try {
			URL realUrl = new URL(url);
			//打开和URL之间的连接
			URLConnection conn = realUrl.openConnection();
			//设置通用的请求属性
			conn.setRequestProperty("Accept", "application/json, text/javascript, */*; q=0.01");
			conn.setRequestProperty("Connection", "keep-alive");
			conn.setRequestProperty("Cookie", cookie);
			conn.setRequestProperty("User-Agent",
					"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36");
			//发送POST请求必须设置如下两行
			conn.setDoOutput(true);
			conn.setDoInput(true);

			//获取URLConnection对象对应的输出流
			out = new PrintWriter(conn.getOutputStream());
			//发送请求参数
			out.print(param);
			//flush输出流的缓冲
			out.flush();
			//定义BufferedReader输入流来读取URL的响应
			in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String line;
			StringBuffer resultDate = new StringBuffer();
			while ((line = in.readLine()) != null) {
				result += line;
				resultDate.append(line.trim());
				System.out.println(resultDate);
			}
		} catch (Exception e) {
			System.out.println("发送POST请求出现异常!" + e);
			e.printStackTrace();
		}
		//使用finally块来关闭输出流、输入流
		finally {
			try {
				if (out != null) {
					out.close();
				}
				if (in != null) {
					in.close();
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
		return result;
	}

    3.HttpRequestWd.httpPost 方法二:获取页面数据

 public static JsonResult httpPost(CloseableHttpClient httpclient, String host, String path, HashMap<String, String> params, List<NameValue> entityList, String cookie) {

        JsonResult jsonResult = new JsonResult();

        CloseableHttpResponse response = null;
        try {
  URIBuilder uriBuilder = new URIBuilder().setScheme("http").setHost(host).setPath(path);
            if (params != null) {
                Set<Entry<String, String>> entrySet = params.entrySet();
                for (Iterator<Entry<String, String>> iterator = entrySet.iterator(); iterator.hasNext(); ) {
                    Entry<String, String> entry = (Entry<String, String>) iterator.next();
                    String key = entry.getKey();
                    String value = entry.getValue();
                    uriBuilder.addParameter(key, value);
                }
            }
            URI url = null;
            try {
                url = uriBuilder.build();
            } catch (URISyntaxException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            HttpPost httpPost = new HttpPost(url);
            httpPost.setHeader("Cookie", cookie);
            httpPost.setHeader("ContentType", "application/x-www-form-urlencoded");
            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(entityList, Consts.UTF_8);
            LogWd.log(entity.toString());
            LogWd.log("参数信息:" + URLEncodedUtils.format(entityList, "UTF-8"));
            LogWd.log("token:" + cookie);
            httpPost.setEntity(entity);
            response = httpclient.execute(httpPost);
            StatusLine statusLine = response.getStatusLine();
            String string = null;
            string = EntityUtils.toString(response.getEntity());
            LogWd.log(new Date().toString());
            LogWd.log("参数信息111:" + response);
            LogWd.log("开始" + url);
            LogWd.log(string);
            LogWd.log("结束" + url);
            if (statusLine != null && 200 != statusLine.getStatusCode()) {
                jsonResult.setCode(statusLine.getStatusCode());
                jsonResult.setMessage("反馈信息出错");
                return jsonResult;
            }
            jsonResult.setCode(200);
            jsonResult.setMessage(string);
            return jsonResult;
        } catch (SecurityException | IllegalArgumentException | IOException e) {
            jsonResult.setCode(500);
            e.printStackTrace();
            jsonResult.setMessage(e.getMessage());
            return jsonResult;
        } finally {
            try {
                if (response != null) {
                    response.close();
                }
            } catch (IOException e) {

                e.printStackTrace();
            }
        }

    }

方法一获取的是个String类型的页面数据,暂时不知道咋分析String类型的页面数据,可以作为返回列表的数据接口使用。

python爬虫之POST登录方式之Cookie、Session import re import requests 登录方式一: 携带登录后的Cookie 下面有一个需要主要的点: ‘Cookie’的值,在登录界面点击右键 检查元素(或者检查),然后选择网络(或者Network)。然后你正常登录,下面的网络中会出现很多请求,找POST请求中的login,复制set-Cookie里面的内容就ok了。最后就是把生成的内容存到一个html里面,可以在网页里面打开... 阅读详情

相关推荐

爬取动态网页,Ajax动态加载和翻页时url不变的网页

文章目录一、找到动态位置二、确定post的url三、 爬取网页1. 获取网页2. 解析网页3. 数据打开4.文件保存附录:完整的python代码 本文主要通过一个实例,实现Ajax动态加载和翻页时url不变的网页。实例网址如下,在选择不同的页码时,网址未发生变化。传统的request,get语句无法实现翻页爬取,因此采用requests.post获取。以下为操作流程。 实例网址:https://souky.eol.cn/web/special/schoolrecom?specialid=2768 一、找

weixin_43899514的博客 2790

几个好用的测试HTTP请求的网站

几个好用的测试HTTP请求的网站

Arthur Guo 的专栏 4万+

爬虫爬取get/post等请求的数据

(此文章认为大家有一定基础而作)一.请求地址       基于restful编程风格的崛起,不管是前端还是后端,大家应该对请求地址都不陌生。       一般大家获取页面请求地址可以直接用浏览器的开发者模式获取,如下面我用chrome截获本篇文章保存的请求地址:选择开发者模式-&gt;Network;左边表示我们请求的网页,右边是具体参数;二、请求参数在General模块可以清楚的看到我们请求的地...

qq_38113432的博客 5301

Post请求如何访问动态URL

背景需求:使用POST发送请求,但是URL中有一部分是从请求体中获得然后拼接而成 例如: curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --data "user_id=1&access_level=30" "https://gitlab.example.com/api/v4/groups/:id/members" curl --request POST --header "PRIVATE-

strongpanghu的博客 2156

如何用python爬取天气预报,python爬虫爬取天气数据

用左上角的小框带箭头的标志,如下图,点击网页内容,这个时候网页就会自动在右边显示出你获取网页部分对应的代码。然后,我们浏览Name这部分,找到我们想要爬取的文件,鼠标右键,选择copy,复制下网页的URL。这个网页可以根据你复制的URL,自动生成header和cookie,如下图。由于我们需要的是网页上的一类信息,所以我们需要对获取的地址进行分析,提取。大家好,小编来为大家解答以下问题,python爬虫爬取天气数据讲解,如何用python爬取天气预报,今天让我们一起来看看吧!'word': '全国天气',

2301_81900439的博客 1155

使用post提交表单的爬虫小程序

本文针对复杂数据网站进行数据爬取测试,本文使用的爬虫工具是psotman,通过postman来模拟和尝试生成post连接,以找出爬虫URL的准确形式,最后将代码整合后形成完整的批量化数据爬取代码。 1.爬取ctd药物数据网站上的drug数据: ctd数很多生物研究常常使用的大型数据库之一,但是要想每次粘贴进去4000个药物名称进行批量查询和下载,往往会导致数据库的反应时间过长,文件过大中途与服务器...

jp_zhou256的博客 1730

11. requests.post()函数访问网页(小白入门)

网页的请求方式为get时,我们可以使用浏览器里的url。网页的请求方式为post时,我们所需的url是【Headers】下【Request URL】后面的网址。

weixin_63986098的博客 1万+

Java实现从学校教务网上爬取数据(一)—— 虚拟登陆

以前看到一些类似课程格子和超级课程表这样的app,感觉都有种高大上的感觉,毕竟可以通过教务网数据从别人的网页上爬到数据,那时的我都不懂这个叫做爬虫程序。这个暑假的课程实践里需要从自家学校的教务网上获取课程表信息,为Android的开发拟写后台的爬虫程序,经过大概一个晚上奋斗,借鉴多方面的资料,最终实现了这个功能,这里把我自己实践过程做一下记录。 第一步:获得post发送的Name 这里

hdx1996的博客 5834

Scrapy 多url爬取、爬取post请求、更换代理ip、指定日志等级

---多url爬取--- import scrapy from many_url_crawl.items import ManyUrlCrawlItem # 爬取之后N页数据 class HandleSpider(scrapy.Spider): name = 'handle' # allowed_domains = ['www.qiushibaik...

weixin_30564785的博客 373

动态网站数据爬取——API接口的使用

要抓取这些 API 的数据,开发者需要通过浏览器的开发者工具(Network 面板)找到相应的 API 请求。在网络爬虫的开发中,除了传统的通过模拟浏览器来抓取网页内容外,直接利用网站提供的 API 接口进行数据获取,是一种更加高效且稳定的方式。许多网站和服务都提供了开放的 API,允许开发者通过 HTTP 请求来获取结构化的数据,这种方式不仅避免了繁琐的页面解析,还能大幅提升数据抓取的速度和准确性。掌握 API 的使用,不仅能提升数据爬取的速度和稳定性,还能有效避免页面解析过程中的困难和不稳定因素。

好看资源网的博客 6563

AI网络爬虫:批量爬取AI导航网站Futurepedia数据

Futurepedia致力于使AI技术对各行各业的专业人士更加可理解和实用,提供全面的AI网站和工具目录、易于遵循的指南、每周新闻通讯和信息丰富的YouTube频道,简化AI在专业实践中的整合。请求载荷:{"verified":false,"sort":"popular","feature":[],"pricing":[],"q":"","page":{pagenumber}}提取每个json数据中所有键的名称,写入Excel文件的表头,所有键对应的值,写入Excel文件的数据列;

AIGCTribe的博客 1853

python登录网站后爬取数据_需要登陆网站后才能获取数据的页面爬取

本文转载自以下链接:https://www.makcyun.top/web_scraping_withpython8.html目的是万一博主网站无法访问到的话自己需要学习的东西可就不存在了.本文需要学习的地方,使用三种不同的方式爬取需要登录才能获取数据的网站数据POST 请求方法:需要在后台获取登录的 URL并填写请求体参数,然后 POST 请求登录,相对麻烦;添加 Cookies 方法:先登录将...

weixin_39640085的博客 5729

实战指南:彻底清除TIA Portal卸载后遗留的SQL Server WinCC实例

本文详细介绍了如何彻底清除TIA Portal卸载后遗留的SQL Server WinCC实例,解决重新安装时的冲突问题。通过控制面板排查、注册表验证、安全卸载操作流程和注册表深度清理等步骤,确保完全移除残留组件,避免系统崩溃。文章还提供了安装环境重建策略和预防措施,帮助工程师高效管理西门子自动化软件。

weixin_30482181的博客 399

pythonrequestspost爬取数据不全_python的post请求抓取数据

所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源。在Python中,我们使用urllib2这个组件来抓取网页。urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。它以urlopen函数的形式提供了一个非...

weixin_39625747的博客 1740

PCB布线避坑指南:为什么你的差分线等长总调不好?AD19蛇形等长技巧详解

本文详细解析了AD19环境下PCB差分线等长调整的核心技巧与常见问题。从差分信号等长的底层逻辑到AD19规则配置,再到蛇形等长高级技巧和信号完整性验证,帮助工程师解决差分线等长调整中的难题,提升高速PCB设计的信号质量。

weixin_28738397的博客 376

信息流广告ROI线性预测看板&投放分析监控看板展示&数据处理入库全流程

此看板数据量太大,在tableau public部署运行速度极慢,因此用图片作展示 数据清洗

Larry_Westside的博客 2308

scrapy模拟ajax的post请求,爬取动态异步网页

直接进入正题:一般来说爬虫类框架抓取Ajax动态页面都是通过一些第三方的webkit库去手动执行html页面中的js代码, 最后将生产的html代码交给spider分析。但是一些简单的动态页面比如翻页等动态异步就不用大动干戈的使用Selenium等测试工具框架模拟浏览器执行js操作,直接发送post请求即可。 下面介绍中基协的异步翻页爬取: 创建爬虫不再赘述。 一、页面分析 1.首先右键=...

进击的Coder菜鸟 5507

LabVIEW Modbus通讯实战:从安装库到读写寄存器的完整避坑指南

本文详细介绍了LabVIEW与Modbus通讯的完整实战指南,从安装库文件到读写寄存器的全流程操作,帮助开发者避开常见问题。通过虚拟串口配置、主机配置实战和高级调试技巧,提升工业自动化领域的通讯效率与可靠性。

milk8的博客 732

python爬虫爬取下一页_【Python爬虫】如何爬取翻页url不变的网站

点击蓝字“python教程”关注我们哟! 之前打算爬取一个图片资源网站,但是在翻页时发现它的url并没有改变,无法简单的通过request.get()访问其他页面。据搜索资料,了解到这些网站是通过ajax动态加载技术实现。即可以在不重新加载整个网页的情况下,对网页的某部分进行更新。这样的设置无疑给初期爬虫新手制造了一些困难。1、什么是ajax几个常见的用到ajax的场景。比如你在逛知乎,你没有刷新...

weixin_39585070的博客 2162

蓝牙配对鉴权过程深度剖析:Just Works/Numeric Comparison/Passkey Entry/OOB 协议流程

当你新买的智能手表与手机配对时,是否遇到过这样的情况:有时只需在手机上点击 "确认" 即可完成配对,有时却需要在手表上输入手机显示的 6 位数字,而连接车载蓝牙时可能又需要输入固定密码?这些差异背后,是蓝牙配对鉴权机制在默默工作。蓝牙配对鉴权是设备间建立安全连接的核心环节,直接关系到数据传输的保密性和设备身份的真实性。​

byte轻骑兵的技术小窝 3565

069、自动曝光(AE)测光策略:全局/中心/点测光与曝光时间增益分配

本文深入探讨了自动曝光(AE)测光策略的技术细节与实际应用。作者通过多个真实案例(手机前置摄像头、车载ADAS、安防监控等)分析了全局测光、中心测光和点测光的优缺点,指出不同场景应采用不同策略。重点剖析了曝光时间与增益分配的"跷跷板效应",提出要根据传感器特性选择最优分配方案。文章强调测光策略应动态调整,并给出5条实用建议:结合场景切换测光模式、关注传感器增益拐点、点测光需防抖处理、全局测光不宜迷信、调试要观察亮度直方图。最后指出AE调试需要结合具体硬件特性进行实测优化,没有通用解决方案。

zzfmlxs的博客 96

scrapy爬取post的数据

1.爬取瑞钱宝的投资方式的数据,爬取内容如下:       2.查看网址,可以发现: 点击下一页时,地址栏里的链接均无任何变化。可以判断出该网页的数据都是post方式上传的。 说一下get和post的区别: get显式的传参,而post是隐式的。 get的URL会有限制,而post没有。 get没有post安全。 不过,小某还看到一篇内容。点击打开

夜斗不是神 1万+

【ARMv9 DSU-120 系列 1 -- DSU-120 DynamIQ 概述】

ARMv9架构中的DynamIQ™ Shared Unit-120(简称DSU-120)为一组基于Cortex-A类架构的核心提供了共享的L3内存系统、窥探控制(snoop control)和 过滤(filtering) 以及其他支持集群运作的控制逻辑。这个集群被称为DSU-120 DynamIQ™集群。此外,所有连接到片上系统(SoC)的外部接口也都是通过DSU-120提供的。一个DSU-120 DynamIQ™集群可以包含1到14个核心,且同一集群中可包含多达三种不同类型的核心。

CodingCos的博客 1179

爬取肯德基餐厅查询指定地点的餐厅信息具体步骤

total_data.extend(list_data['Table1']) # 将当前页的数据添加到总数据中。total_data.extend(list_data['Table1']) # 将当前页的数据添加到总数据中。print('抓取成功第' + str(page) + '页成功!'User-Agent': 'Mozilla/5.0'#此处UA没有复制完整。print('抓取成功第' + str(page) + '页成功!print('所有数据已保存到', fileName)

UnalomeCX330的博客 1517

纯C语言实现的Luhn算法(信用卡校验位):详解与示例

在本文中,我们详细介绍了如何使用纯C语言实现Luhn算法,并提供了一些示例代码。用于检查任意长度的数字字符串的有效性,用于计算给定数字字符串的校验位字符。我们还提供了一个简单的“main”C程序,用于在命令行上接受一个或多个数字字符串,并计算它们的校验位字符。通过阅读本文和理解示例代码,我们希望读者能够更好地理解Luhn算法的工作原理,并能够在自己的项目中应用这种算法。

qq_38334677的博客 1217

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

爬虫 python 爬取php的网页,带有post参数的网页如何爬取

记录一下自己的爬虫踩过的坑,上一次倒是写了一些,但是写得不够清楚,这次,写清楚爬取的过程。 这个网站是某省的志愿服务网。 就是它了。 我向爬取一些组织开展过的活动,比如这一个组织, 这个组织的页面找打它不存在什么问题,组织的网址只需要拼接就可以了。 看似很容易。 基础网址是:https://sd.zhiyuanyun.com/app/org/view.php?id=(*****) 前面是一堆,后面只需要把id后面的组织的ID放进去就可以,组织的ID也很好找。就是直接从首页...

weixin_40340586的博客 4830

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: idea编译的问题
下一篇: 读取Properties文件 File
未来的农场主
博客等级 码龄6年 3粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值