weixin_74268814 2024-04-30 18:21 采纳率: 0%
浏览 22

51job获取acw_tc__v2后的同步请求的问题,详细在图中

图片中已经说明我的操作方式,请求头中数据相同,我觉得是能模拟浏览器那种请求再请求,结果我写出来变成了两次请求一样,就得不到想要的数据了

img

img

  • 写回答

5条回答 默认 最新

  • 专家-皆知 2024-04-30 18:21
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    根据您的描述,您在尝试模拟登录并访问51job的搜索页面时遇到了问题,特别是关于如何正确使用acw_tc和动态生成的acw_sc__v2来保持会话状态。这里的关键在于理解51job网站的会话管理机制,并确保第二次请求时正确携带所有必要的cookie信息。

    从您提供的信息来看,您已经正确地进行了第一步,即获取了初始页面和动态生成的arg1,然后通过执行JavaScript代码得到了acw_sc__v2。问题可能出在如何准确地将这些信息用于后续请求,以保持与服务器的会话一致。

    下面是一个可能的解决方案,我会尽量提供一个清晰的代码示例,确保您在发送第二个请求时能够正确携带所有必要的cookie,包括动态生成的acw_sc__v2

    import requests
    import re
    import execjs
    
    # 获取当前时间戳
    timestamp = str(int(time.time()))
    
    # 假设cookies和headers已经定义好
    cookies = {...}
    headers = {...}
    params = {...}  # 假设params已经定义好
    
    # 第一步:获取初始页面和arg1
    initial_response = requests.get('https://we.51job.com/api/iob/search-pc', params=params, cookies=cookies, headers=headers)
    acw_tc = initial_response.cookies['acw_tc']
    arg1_match = re.findall(r"var arg1 = '(.*)';", initial_response.text)
    arg1 = arg1_match[0] if arg1_match else None
    
    # 确保获取到arg1
    if not arg1:
        print("未能正确获取arg1")
    else:
        # 使用execjs编译并调用函数获取acw_sc__v2
        with open('demo2.js', 'r', encoding='utf-8') as file:
            js_content = file.read()
        acw_sc__v2 = execjs.compile(js_content).call('get_arg3', arg1)
    
        # 更新cookies,添加acw_sc__v2
        cookies.update({'acw_sc__v2': acw_sc__v2})
    
        # 第二步:使用更新后的cookies发送请求
        final_response = requests.get('https://we.51job.com/api/iob/search-pc', params=params, cookies=cookies, headers=headers)
        
        # 打印最终响应的内容
        print(final_response.text)
    

    关键点

    • 确保您的JavaScript代码(demo2.js)能够正确计算出acw_sc__v2
    • 在第一次请求后,您应该检查响应是否成功,并且确实包含了您需要的动态参数。
    • 在更新cookies时,直接将acw_sc__v2添加到cookies字典中,然后在第二次请求时使用这个更新后的cookies字典。

    如果问题仍然存在,可能需要更深入地分析51job的会话管理机制,比如检查是否有其他必需的cookie或HTTP头没有被正确设置,或者是否存在会话过期、JavaScript加密逻辑改变等问题。在处理这类网站时,要留意它们可能会有反爬虫措施,频繁请求可能会导致IP被封禁。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月30日

悬赏问题

  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响
  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?