V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
catsky
V2EX  ›  问与答

2022 了 抓取交互网页结果的最佳方式是什么?

  •  
  •   catsky · 2022-10-09 14:17:47 +08:00 · 1293 次点击
    这是一个创建于 807 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目标网页是一个网页表单,填入信息后出结果,看了下也没用 ajax 请求,要获取结果信息是不是一定要用 Selenium 这类模拟点击然后解析结果?

    比如 https://online.transport.wa.gov.au/webExternal/registration 输入 6666 获取结果页面的信息

    用 js 容易实现吗?请教各位高手

    8 条回复    2022-10-09 17:24:28 +08:00
    crab
        1
    crab  
       2022-10-09 14:22:25 +08:00   ❤️ 1
    不需要模拟,首先访问提取出 jsessionid ,再 post 请求得到页面信息。
    catsky
        2
    catsky  
    OP
       2022-10-09 14:39:07 +08:00
    @crab 👍
    catsky
        3
    catsky  
    OP
       2022-10-09 14:59:06 +08:00
    但是这个网页用 postman 模拟发送 post 请求就过不去,一直提示 access denied , 我把 JSESSIONID 都放了也没用

    [https://rego.act.gov.au/regosoawicket/public/reg/FindRegistrationPage]( https://rego.act.gov.au/regosoawicket/public/reg/FindRegistrationPage)
    catsky
        4
    catsky  
    OP
       2022-10-09 14:59:24 +08:00
    gam2046
        5
    gam2046  
       2022-10-09 15:22:22 +08:00   ❤️ 1
    对效率要求不高的话,直接通过 devtools 一把梭上去自动化,只要浏览器能正常显示的,都能弄回来,退一步就是 headless ,但是 headless 有比较明显的特征,也有比较成熟的探测方案。两者速度上基本没太大区别。
    estk
        6
    estk  
       2022-10-09 16:27:38 +08:00 via Android
    如果只是为了数据,直接分析对方的 api 更高效
    inktiger
        7
    inktiger  
       2022-10-09 16:37:43 +08:00   ❤️ 1
    你这个页面我瞅了瞅,貌似直接 api 的方式不容易,第一个页面传参,是到后端组装了,写入 cookie 再返回详细页面,后续刷新也是靠 cookie 里的参数来维持页面内容,我估计只有 selenium 来处理了,用 selenium 关掉图形界面性能也还过得去,如果还觉得性能不行,那再试试 htmlunit 。
    catsky
        8
    catsky  
    OP
       2022-10-09 17:24:28 +08:00 via iPhone
    对的 很奇怪的页面渲染方式,要 js 模拟好像很难诶…. 目前挠头中….. https://rego.act.gov.au/regosoawicket/public/reg/FindRegistrationPage
    @inktiger
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2982 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:01 · PVG 22:01 · LAX 06:01 · JFK 09:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.