使用 Python 请求库发送 jquery AJAX GET 请求
Sending an jquery AJAX GET request with Python request library
我有一个网站需要抓取,它使用 jquery AJAX 函数从服务器获取信息。我已经研究了一段时间的代码,并且使用以下方法成功地从服务器获得了响应:
data = {'part_number':'1234'}
r = $.ajax({
type : 'GET',
url : 'ajaxurl',
data : data
})
请注意,这是通过 js 控制台完成的,所以我已经登录了。当我尝试在 python 中执行此操作时,我当然需要先登录:
import requests
headers = {'User-Agent': 'Mozilla/5.0','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
payload = {'username':'me','password':'1234'}
link = 'login url'
session = requests.Session()
resp = session.get(link,headers=headers)
cookies = requests.utils.cookiejar_from_dict(requests.utils.dict_from_cookiejar(session.cookies))
resp = session.post(link,headers=headers,data=payload,cookies =cookies)
#until here sucesss!"############
url = "ajaxurl"
my_params={'part_number':'1234'}
r = session.get( url = url, data = my_params, cookies =cookies,headers =headers )
post 登录请求进行得很顺利,但是对于 GET 响应,我收到 BAD REQUEST 400。我不知道如何格式化我的请求。我不知道 ajax 对我的请求做了什么。有人有什么想法吗?
提前致谢!
BAD REQUEST 400 表示服务器无法理解或处理您的请求(您通过 AJAX 发送的数据)。
由于您在 AJAX 中使用 GET
方法,我会尝试使用传统的 url 查询字符串:
var request = 'part_number=1234';
$.get('http://your.website/your_server_file?'+request, function(data){
// handle the server response (data) here ...
});
解决了!
我将 'X-Requested-With': 'XMLHttpRequest'
添加到 headers 并做了:
pn = '1234'
r = requests.get(ajaxurl + '?part_number=' + pn, headers=headers, cookies=cookies)
不明白为什么:(
我有一个网站需要抓取,它使用 jquery AJAX 函数从服务器获取信息。我已经研究了一段时间的代码,并且使用以下方法成功地从服务器获得了响应:
data = {'part_number':'1234'}
r = $.ajax({
type : 'GET',
url : 'ajaxurl',
data : data
})
请注意,这是通过 js 控制台完成的,所以我已经登录了。当我尝试在 python 中执行此操作时,我当然需要先登录:
import requests
headers = {'User-Agent': 'Mozilla/5.0','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
payload = {'username':'me','password':'1234'}
link = 'login url'
session = requests.Session()
resp = session.get(link,headers=headers)
cookies = requests.utils.cookiejar_from_dict(requests.utils.dict_from_cookiejar(session.cookies))
resp = session.post(link,headers=headers,data=payload,cookies =cookies)
#until here sucesss!"############
url = "ajaxurl"
my_params={'part_number':'1234'}
r = session.get( url = url, data = my_params, cookies =cookies,headers =headers )
post 登录请求进行得很顺利,但是对于 GET 响应,我收到 BAD REQUEST 400。我不知道如何格式化我的请求。我不知道 ajax 对我的请求做了什么。有人有什么想法吗?
提前致谢!
BAD REQUEST 400 表示服务器无法理解或处理您的请求(您通过 AJAX 发送的数据)。
由于您在 AJAX 中使用 GET
方法,我会尝试使用传统的 url 查询字符串:
var request = 'part_number=1234';
$.get('http://your.website/your_server_file?'+request, function(data){
// handle the server response (data) here ...
});
解决了!
我将 'X-Requested-With': 'XMLHttpRequest'
添加到 headers 并做了:
pn = '1234'
r = requests.get(ajaxurl + '?part_number=' + pn, headers=headers, cookies=cookies)
不明白为什么:(