使用Python请求模拟ajax POST调用

编程入门 行业动态 更新时间:2024-10-27 10:24:17
本文介绍了使用Python请求模拟ajax POST调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在做一个项目,我的解析器 steals 获取有关特定网站上每个视频的数据并将其保存到我的数据库中。除了完全链接到隐藏的视频外,我已经完成了所有工作。 有一个播放器,它自动在页面加载时启动。我找到了启动播放器的JavaScript代码:

I'm doing a project where my parser steals gets data about every video on the specific site and save it to my database. I have accomplished everything except full link to the video which is hidden. There is a player, which automaticaly starts on page load. I have found the JavaScript code which starts the player:

function getVidData(resolution, init) { << some code here >> jQuery.ajax({type: 'POST', url: '/ajaxdata.php', dataType: 'json', data: 'mod=videodata&vid=48902&res=' + resolution, success: function (response) { if (response.error != '' && response.error != undefined) { << error handling code here >> } else { StartPlayer(response.width, response.height, response.filename); } } }); }

因此,如果没有发现任何错误,请致电后使用启动播放器文件名来自响应。这就是我需要的。 我在实时HTTP标头中重新检查了一个电话:

So after a call if no error found it starts a player using filename from response. That is what I need. I rechecked a call in Live HTTP Headers:

<< SITE_URL >>/ajaxdata.php POST /ajaxdata.php HTTP/1.1 Host: << SITE_URL >> User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 Accept: application/json, text/javascript, */*; q=0.01 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest Referer: << VIDEO_PAGE >> Content-Length: 31 Cookie: << COOKIE VALUES >> DNT: 1 Connection: keep-alive Pragma: no-cache Cache-Control: no-cache mod=videodata&vid=48901&res=640 HTTP/1.1 200 OK Server: nginx/1.5.9 Date: Tue, 22 Apr 2014 16:30:06 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive Expires: Tue, 22 Apr 2014 16:30:05 GMT Cache-Control: no-cache Pragma: no-cache Content-Encoding: gzip

所以它调用 ajaxdata.php 有特定参数并且在响应中我应该找到文件名。 但是这个Python代码对我来说绝对没有任何内容(既不是内容也不是错误)

So it calls ajaxdata.php with specific params and in response i should find the filename. However this Python code returns absolutely nothing to me (neither content nor errors)

import requests url = "LALLALAA/ajaxdata.php" data_video = {"mod": "videodata", "vid": "48901", 'res': '640'} s = requests.Session() s.post(login_url, data=login_data) # Authentication content = s.post(url, data=data_video) print content.content

可变内容仅打印Response [200] 现在我完全陷入困境,如果有人能指出我所做的错误或我可以尝试的解决方案,我将不胜感激。 谢谢

Variable content prints only "Response [200]" Now I'm completely stuck and would be grateful if anyone could point to errors I done or solutions i could try. Thanks

推荐答案

以 Martijn Pieters 建议,我一个接一个地尝试了标题,发现这个组合现在正在运行:

As Martijn Pieters suggested, I tried headers one by one and found that this combination is working now:

import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'X-Requested-With': 'XMLHttpRequest' } s = requests.Session() s.post(login_url, data=login_data) content = s.post(url, data=data_video, headers=headers)

我感谢大家,特别是 Martijn Pieters 。

更多推荐

使用Python请求模拟ajax POST调用

本文发布于:2023-10-12 01:09:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1483333.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Python   ajax   POST

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!