python request 库POST请求从ajax爬取数据遇到formdata不会处理了

目标爬取网站为http://www.ccgp-shaanxi.gov.cn/notice/list.do?noticetype=3&province=province

form data为:
form data

以下为我的代码:

import requests
from urllib.parse import urlencode

base_url = 'http://www.ccgp-shaanxi.gov.cn/notice/noticeaframe.do?noticetype='
noticetype = '3'
url = base_url + noticetype
headers = {
    'Host': 'www.ccgp-shaanxi.gov.cn',
    'Referer': 'http://www.ccgp-shaanxi.gov.cn/notice/list.do?noticetype=3&province=province',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest'}

data = {
    'parameters[purcatalogguid]': '',
    'page.pageNum': '',
    'parameters[title]': '税',
    'parameters[startdate]': '',
    'parameters[enddate]': '',
    'parameters[regionguid]': '6101',
    'parameters[projectcode]': '',
    'province': '',
    'parameters[purmethod]': ''
}

data = urlencode(data)
print(data)
request = requests.post(url, data=data, headers=headers)
# print(request.text)
print(request.headers)


但是获取到的信息反应、感觉formdata貌似没有起作用,因本人属于新手小白,各位大神能指点指点吗?

可以执行一下帮忙分析分析吗?

0

2个回答

刚看了一下你的代码:

改了一下,我加了查询日期,6月1日到6月11的。其他字段自己加上就行了:

import requests
url = "http://www.ccgp-shaanxi.gov.cn/notice/noticeaframe.do?noticetype=3"
headers ={
"Host": "www.ccgp-shaanxi.gov.cn",
"Connection": "keep-alive",
"Cache-Control": "max-age=0",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9",
"Cookie": "JSESSIONID=7FE3D1F9A78DB03F2C5D49090F024A75"
}
form_data = [('parameters[purcatalogguid]', ''),
('parameters[title]', ''),
('parameters[startdate]', '2018-06-01'),
('parameters[enddate]', '2018-06-11'),
('parameters[regionguid]', '610001'),
('parameters[projectcode]', ''),
('province', ''),
('parameters[purmethod]', ''),
]
page = requests.post(url=url, headers=headers, data=form_data).text
print(page)


0
Ghost__9
Ghost__9 对对对对、新手给弄混了、
大约一年之前 回复
m0_38124502
我不喜欢这个世界 回复Ghost__9: post数据不会显示在 URL 中。get数据显示在url中,urlencode()对url进行编码为统一资源定位是合适的,没必要对post数据进行编码,编了以后反而会出现错误。
大约一年之前 回复
Ghost__9
Ghost__9 恩、、、您能解释一下我 这样转码的话urlencode(data)是不对的吗?
大约一年之前 回复

print(request.body)试试

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
爬虫中ajax获取数据的方式(post)
基于Jsoup的爬虫中ajax获取数据的方式(post)
Python3爬虫之urllib爬取异步Ajax数据,使用post请求!
ok,废话就不多说了,直接上手。今天爬取的是豆瓣电影的排行榜。 首先使用google浏览器的开发者工具,找到豆瓣的电影排行榜接口 https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=40&limit=20 分析这个url,发现后面的start=40&limit=20很像SQ
servlet获取ajax post请求中参数以form data和request payload形式传输的方法
HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value&name1=value1的形式在请求体中。通过chrome的开发者工具可以看到,如下: get请求: RequestURL:http://127.0.0.1:8080/test/test...
scrapy爬取post的数据
1.爬取瑞钱宝的投资方式的数据,爬取内容如下:       2.查看网址,可以发现: 点击下一页时,地址栏里的链接均无任何变化。可以判断出该网页的数据都是post方式上传的。 说一下get和post的区别: get显式的传参,而post是隐式的。 get的URL会有限制,而post没有。 get没有post安全。 不过,小某还看到一篇内容。点击打开
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value&name1=value1的形式在请求体中。通过chrome的开发者工具可以看到如下(这里是可读的形式,不是真正的HTTP请求协议的请求格式): get请求:   [plain...
jQuery.ajax设置请求头实现post请求发送数据的格式(Form Data和Request Payload)
 Request Payload 请求头部的 Content-Type: application/json,请求正文是一个 json 格式的字符串 Form Data 请求头部的 Content-Type: application/x-www-form-urlencoded,请求正文是类似 get 请求 url 的请求参数 <!DOCTYPE html> <html l...
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value&name1=value1的形式在请求体中。通过chrome的开发者工具可以看到如下(这里是可读的形式,不是真正的HTTP请求协议的请求格式): get请求: RequestURL:http://127.
前端XMLHttpRequest 发送请求 FormData后台接收不到数据,request.getParameter(),获取数据为null
var form = new FormData(); form.append("fName",$("#fName").val()); form.append("fPrice",$("#fPrice").val()); form.append("fType",$("#fType").val()); form.a
scrapy抓取ajax请求的网页
在上一篇博客 http://zhouxi2010.iteye.com/blog/1450177 中介绍了用scrapy抓取网页,但是只能抓取普通html中的链接,对于ajax请求的网页却抓不到,但是实际应用中ajax请求又是十分普遍的,所以这里在记录下抓取ajax页面的方法. 仍然是spiders/book.py: Java代码   class B
python3 requests 动态网页post提交数据
1.登录清博大数据网站(http://www.gsdata.cn/)(想采集微信文章的可以来这里) import requests import json conn = requests.session() # 登录 url = 'http://www.gsdata.cn/member/login' postdata = { 'username': '******', 'pa...
post请求方式的翻页爬取内容及思考
1 #coding=utf-8 2 3 import urllib2 4 import urllib 5 import json 6 9 output = open('huizho.json', 'w') 11 for page in range(1,30): //爬取的页数,从1至29页 12 request =urllib2.Request('http:
python3 网络爬虫(三)利用post请求获取网页的动态加载数据
环境:python3.4 win7 框架:scrapy上一篇讲了利用get请求获取王爷的动态加载数据,这一篇文章让我们来简单介绍一下如何用post请求来获取网页的动态加载数据,这一次我们面对的是某音乐网站的歌曲评论,利用 谷歌浏览器 - F12(开发者工具) - 查看Headers 的方式我们可以查看在浏览该网页时的一些信息:(如何抓包,上一篇文章已经介绍了,有兴趣的可以去看看,这里就
Python爬虫之requests库(三):发送表单数据和JSON数据
import requests 一、发送表单数据 要发送表单数据,只需要将一个字典传递给参数data payload = {'key1': 'value1', 'key2': 'value2'} r = requests.post("http://httpbin.org/post", data=payload) print(r.text) {"args":{},"data":&
Scrapy模拟表单和Ajax发送POST请求
普通请求使用scrapy.Request类就可以实现,但是遇到模拟表单提交post请求的时候,Request类就不如子类**FormRequest类方便了,因为他自带**formdata,专门用来设置表单字段数据。def start_requests(self): form_data = {'f1':'1', 'f2':'100'} # 表单数据,字典格式,注意数字也要用引号引起来,否则报
Python中通过requests模块发送POST请求.
博客核心内容:1、Python中通过requests模块发送POST请求. 我们通常情况下提交数据一般有两种方式:Ajax和Form表单的方式 如果request.post里面没有值,我们就到request.body里面去拿 代码示例: 服务端:from django.shortcuts import render,HttpResponse from django.views.decor
requests分析Ajax来爬取今日头条街拍美图
#参考代码:https://github.com/Germey/TouTiao import requests from bs4 import BeautifulSoup from urllib.parse import urlencode#可以将字典构造为url import re import json import pymongo import os from multiprocessin
AJAX POST请求中参数以form data和request payload形式在php中的获取方式
一.MINE TYPE问题: php对mime type为“application/x-www-form-urlencoded”(表单提交)和“multipart/form-data”(文件上传)的Post请求的数据作特殊处理 下面以“multipart/form-data”为例对源码进行解析: 当客户端发起文件提交请求时,Apache会将所接收到的内容转交给mod_php5模块
python爬虫之爬取ajax数据方法
使用python包:requests,具体方法:1. 首先是定义自己headers,注意headers里面的User-Agent这一字段可以根据自己需求设计一个列表,用于随机调换。2.ajax数据的网页特点:NetWork中的XHR网络流中有一些ajax请求,其中它们request_url必定是一个ajax请求接口,并且headers里面的referer是其跳转前的url,在构造自己的header...
利用tornado的Ajax从前端上传FormData数据及后端获取
     最近实习开始学习python搭建小型网站。其中使用框架为tornado,因此被推荐使用极客学院的《用tornado做网站》。真的是一个很好的教程,感谢编写者。    后来自己拓展编写注册信息,由于原文的提交方式有问题未解决,故用FormData提交。1. js文件及注释如下:$(document).ready(function(){ $("#login_in").clic...
scrapy爬虫注意点(1)—— scrapy.FormRequest中formdata参数
1. 背景 在网页爬取的时候,有时候会使用scrapy.FormRequest向目标网站提交数据(表单提交)。参照scrapy官方文档的标准写法是: # header信息 unicornHeader = { 'Host': 'www.example.com', 'Referer': 'http://www.example.com/', } # 表单需要提交的数据 my...
Python3 爬取今日头条(模拟ajax请求)
Python3 爬取今日头条(模拟ajax请求)注:本文是跟据博主崔庆才的博客来写的,不单单是思路值得学习,还有代码规范更值得去学习。
python之requests实现多表单请求
一、multipart/form-data简单介绍 http的多表单提交时post请求一种, 1、需要再http request header里面设置Content-Type:multipart/form-data; boundary=---------------thisisboundaryfortest     multipart/form-data  此类型告诉服务端,请求是一个多表单
Ajax利用FormData提交文件和数据
一、ajax提交纯表单(不包含文件或二进制或非ASCII数据)      ajax提交表单绕了很久,遇到一些问题进行测试下以加深理解,测试使用浏览器 49.0.2623.110 m,HTML使用HTML4标准。下文提到的ajax为原生javascript的ajax(脚本化HTTP),都是个人理解,如有错误还望被指正。关于AJAX,XMLHttpRequest,FormData等应该还有许多待
爬虫中复杂点的ajax请求该如何破?
本次需要用到的工具是charles工具进行抓包。这个工具大家自行百度下载,不会用的话也可以百度下,本篇文章就不对这个工具多说了。用这个工具是它有强大的搜索功能,可以一键搜索出我想要的网络请求。   这次网站是这个http://drugs.dxy.cn/     需求是获取所有药品的详细信息,第一眼看上去是觉得不难的,点了进去你才知道是有坑的。       比如上面这个,需...
使用formdata提交ajax请求
var form = $("#form_id")[0]; var oFile = $("#media").get(0).files[0]; var formData = new FormData(form); //FormData可以一次性获取form表单的全部内容 formData.append("name","名字"); //追加非form表单的内容 formData.append(...
【python 爬虫】python如何以request payload形式发送post请求
普通的http的post请求的请求content-type类型是:Content-Type:application/x-www-form-urlencoded, 而另外一种形式request payload,其Content-Type为application/jsonimport json url = 'https://api.github.com/some/endpoint' payload =
multipart/form-data post 方法提交表单,后台获取不到数据
multipart/form-data post 方法提交表单,后台获取不到数据 这个和servlet容器有关系,比如tomcat等。  1.get方式  get方式提交的话,表单项都保存在http header中,格式是  http://localhost:8080/hello.do?name1=value1&name2=value2这样的字符串。server端通
uni-app 发起网络请求(二)
uni.request(OBJECT) 发起网络请求。 OBJECT 参数说明 参数名 类型 必填 默认值 说明 url String 是   开发者服务器接口地址 data Object/String/ArrayBuffer 否   请求的参数 header Object 否   设...
关于python 爬虫遇到Request Payload怎麽提交数据的方法
平时在写爬虫的时候,我们提交的表单一般都是from data,这个就很好提交了,在这里笔者就不写了,下面我们说说 当遇到Request Payload时,怎麽提交表单吧.   先上图,这个是笔者写爬虫时遇到request payload时,还是想from data那样来爬取数据,结果返回的是{"Message":"An error has occurred."},很郁闷,上百度找了一下资料,...
python爬取网站数据(post)方式
最近python太火了,所以也拿来学习一下。按照网上的教程写了一下简单的post数据请求。 我使用的环境python3.6,使用的到库有urllib和beautifulsoup python的安装还是非常简单的,直接到官网下载后安装即可。 第三方库的安装 执行 pip install beautilfulsoup4 pip install requests 当然使用内建的模块urli
Ajax提交表单报400 bad request错误
Ajax提交表单报400 bad request错误
Python 异步加载XHR数据抓取——GET与POST请求方式对比
对于有的网页,我们滑动滚轮或者点击下一页,我们发现网址url没有发生变化,我们称这些网页为动态网页。 因此,我们需要F12开发者工具,选中Network--XHR不断滑动滚轮或者点击下一页,我们就会发现网页中的内容就隐藏在XHR里面。 但要注意网页的请求方式是GET还是POST。 下面以今日头条图片网页和美团外卖评论网页作为对比进行分析。 注意: 所有的url都是XHR下的链接,去掉多余的参数。 ...
IONIC3问题:post传错值数据库错误,form-data和request payload
Error: { Error: ER_BAD_NULL_ERROR: Column 'NAME' cannot be null at Query.Sequence._packetToError (E:\HtmlProject\Server\node_modules\mysql\lib\protocol\sequences\Sequence.js:52:14) at Query
让axios发送表单请求形式的键值对post数据
想要发送键值对,其实是需要做响应处理的,直接上代码npm install --save axios vue-axios qsqs是必不可少的插件,安装完成后,在main.js插入一下代码//载入axios import Qs from 'qs' import axios from 'axios' import VueAxios from 'vue-axios' var axios_instance
当爬虫碰到加密请求参数
前言:之前查找一个网站的加密方式找了一个星期。放弃了。过了两天又满血归来,一个小时破解了 注:本篇博客,不会讲解任何加密相关的算法。爬虫破解加密算法,可以完全不懂加密算法,需要的是耐心 先说说最近碰到反爬虫相关的方式吧 1.加密+访问次数限制+每个页面相关信息的条目需要点详情进行二次请求 2.复杂的加密算法进行参数+时间戳+sig值,后台进行 参数+时间限制 3.定时同步cookie+每
基于Express框架使用POST传递Form数据
客户端使用Form发送数据在客户端Html文件中Form代码如下: 在服务器端处理'/test' POST请求的代码如下: var bodyParser = require('body-parser'); // ... // create application/json parser var jsonParser = bodyParser.json() /
怎样获取form-data方式POST的数据
转自:http://ju.outofmemory.cn/entry/201812 用x-www-form-urlencoded方式提交表单就可以正常绑定数据,但是用form-data方式提交就绑定不了: @Controller @RequestMapping("/tag") public class TagController { @Autowired private
scrapy 抓取ajax请求的网页-以ifanr为例
在爬取ifanr网站时遇到了无法直接获得下一页链接的地址,下一页的数据是通过点击加载更多之后触发ajax事件来请求数据的。 那么我们按F12来看下网页的结构,可以发现此处并不能够得到我们想要的网址。 那么问题来了,我们如何来处理有ajax请求的网页呢?百度一下可以发现有两种方法,一种是通过虚拟浏览器模仿触发ajax请求的行为;一种是找出ajax请求之后下一页的地址,直接访问该地
项目踩坑记录ajax使用post方法向后台传Form Data的方法
其实ajax默认就是一个From Data类型的参数包,但是有些时候代码的一些结构会改变你的默认数据包,但是后台还是需要From Data类型,那么你就应该手动对参数进行包装,包装From Data类型如下: 注:自己手动创建的From Data的表单域。 let fm = new FormData(); //fm.append(属性:属性值); fm.append('id', id)...
axios 将post请求数据转为formdata
axios({ url: ‘/api/index/getIndexlbt’, method: ‘post’, data: { relevanceId:this.$route.params.id, pictureType:4 }, ...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python数据爬取教程 python爬取数据教程