请选择 进入手机版|继续访问电脑版
发新帖

Python 模拟浏览器请求,怎么保持前一个 get 和后一个 post 是对同一个页面进行处理呢 ...

[复制链接]
10463 11

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如题..需要用到什么模块呢? requests 的话后一次 POST 是又一次对 URL 的请求了,不知道该怎么实现对上一次 GET 请求返回的页面进行请求呢?

举报 使用道具

回复

精彩评论11

wisej  新手上路  发表于 2018-5-16 14:16:52 | 显示全部楼层
如果你没有禁止重定向的话,我猜你是想要 r.url 这个值?

举报 使用道具

回复
302766392  新手上路  发表于 2018-5-16 14:20:15 | 显示全部楼层
可以建立一个会话连接
s = requests.session()
g_res = s.get(url, headers, params)
p_res = s.post(url, headers, data)

举报 使用道具

回复
shuax  新手上路  发表于 2018-5-16 14:22:00 | 显示全部楼层
我猜你是想用 session

举报 使用道具

回复
ruohua3kou  新手上路  发表于 2018-5-16 14:35:29 | 显示全部楼层
import requests

# ses = requests.Session()
# first_url = "http://112.74.185.30:8080/yiban-web/stu/toSubject.jhtml?courseId=8"
# first_headers={
#     'host': '112.74.185.30:8080',
#     'Accept-Encoding': 'gzip, deflate',
#     'Upgrade-Insecure-Requests': '1',
#     'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1',
#     'Referer': 'http://112.74.185.30:8080/yiban-web/stu/toCourse.jhtml',
#     'DNT': '1',
#     'Connection': 'keep-alive',
# }
# first_cookies = {'JSESSIONID': '0D7E4E12942F878489DEA60B97561F8F'}

# res=ses.get(url=first_url,cookies=first_cookies)

headers = {
    'host': '112.74.185.30:8080',
    'Accept': 'application/json',
    'X-Requested-With': 'XMLHttpRequest',
    'Accept-Language': 'zh-cn',
    'Accept-Encoding': 'gzip, deflate',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Origin': 'http://112.74.185.30:8080',
    'Content-Length': '57',
    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1',
    'Referer': 'http://112.74.185.30:8080/yiban-web/stu/toSubject.jhtml?courseId=8',
    'DNT': '1',
    'Connection': 'keep-alive',
    'Cookie': 'xxx',
}

data={
    'answer':'A',
    'courseId':'8',
    'uuid':'EB180D559F46426DAD2E9916DEA501DBxxxxxx'
}

res = requests.post(url='http://112.74.185.30:8080/yiban-web/stu/changeSituation.jhtml?_=1526406696684',headers=headers, data=data)
print(res.text)


====================================
注释里 GET 得到的页面里,有个 UUID 在一段 JS 代码里,然后我想得到这个 UUID 并且加到 DATA 中去 POST 刚刚 GET 得到的内容

举报 使用道具

回复
manzhiyong  新手上路  发表于 2018-5-16 14:40:10 | 显示全部楼层
webdriver 了解一下

举报 使用道具

回复
ruohua3kou  新手上路  发表于 2018-5-16 14:42:17 | 显示全部楼层
@wisej 新回复贴了代码,是想得到 GET 页面生成的一段 KEY 值

举报 使用道具

回复
ruohua3kou  新手上路  发表于 2018-5-16 15:03:12 | 显示全部楼层
谢谢楼上各位,我试试这俩方法。。

举报 使用道具

回复
hopetree  新手上路  发表于 2018-5-16 15:06:34 | 显示全部楼层
session 就行

举报 使用道具

回复
wisej  新手上路  发表于 2018-5-16 15:07:48 | 显示全部楼层
@Ruohua3kou 我一般是正则提取

举报 使用道具

回复
mavious  新手上路  发表于 2018-5-16 15:11:08 | 显示全部楼层
session 是用来保持 cookies 的,让 URL1 携带着 cookies 到下一个 URL2 里去。感觉不适用于 LZ 的要求。

举报 使用道具

回复
monologuechi  新手上路  发表于 2018-5-16 15:41:00 | 显示全部楼层
我也有遇到过这种问题,需要先获取页面生成的随机数,然后随机数要提交到表单里

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表