V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
qazwsxkevin
V2EX  ›  Python

selenium+webdriver 如何实现这种半自动响应?(爬虫)

  •  
  •   qazwsxkevin · 2019-10-07 09:37:25 +08:00 · 5077 次点击
    这是一个创建于 1909 天前的主题,其中的信息可能已经有所发展或是发生改变。

    webdriver 运行后,出现浏览器后。。(如:Chrome )
    运行后,浏览器不退出,继续使用 webdriver 浏览器冲浪,
    遇到合适的网页,按 F12,F9,和 chrome 不冲突的的热键,分别调用不同的函数进行处理(将 drivers.page_source 作为参数传入) 请问这种方式应该如何实现? 因为一些原因,不可能将整个网站盘下来,只能人肉浏览,遇到合适的进行处理。。。

    10 条回复    2019-10-08 08:04:32 +08:00
    Karpov
        1
    Karpov  
       2019-10-07 09:53:32 +08:00
    selenium 不熟悉,不过 puppeteer 应该可以。利用函数 page.waitForFunction 等待一个函数返回为真

    https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagewaitforfunctionpagefunction-options-args

    也许,你可以在这里编写等待按键消息的逻辑。
    ClericPy
        2
    ClericPy  
       2019-10-07 10:07:18 +08:00   ❤️ 1
    你都半自动了, 还抱着 selenium 不放... 很多写爬虫教程的自己都一知半解的, 从 CSDN 上抄个 selenium quick start 就劝人用 selenium 写爬虫了.

    给你两条简单的路子吧
    1. 使用 tampermonkey 注入 JS, 会点 JS 然后了解一下它原生的基础功能(比如操作剪贴板), 可以对网页随便蹂躏, 我常用的就是给网页里直接注入七八个按钮, 需要的时候就点, 有时候也可能给 body 绑定双击操作, 然后 pyperclip 监听下剪贴板就够了, 曾经用这个做过某不存在网站里 mp4 的下载
    2. 研究研究 chrome 那套 cdp 协议, 前几天正好手撸了一个支持协程的请求库, 肯定不如 puppeteer, 但是这东西我连名字都背不过... 也基本用不上太多功能... 跑题了, 你这种要求, cdp 里有个 Response.receive 事件监听起来, 就可以了, 任何请求, 包括静态页面 ajax 图片, 都可以监听. 当然直接上 pypperteer 也挺不错的
    3. 简单写个 chrome 扩展, 不过大多数情况不如直接 tampermonkey 简单, 除非要特别高权限才考虑它, 我很多人机交互的都改到 tampermonkey 上了
    napsterwu
        3
    napsterwu  
       2019-10-07 10:18:14 +08:00 via iPhone   ❤️ 1
    楼上说的对。补充一下,油猴可以自动交互但不好监控网络请求,chrome extension 可以监控请求但没法监控响应,cdp 全部都可以做但是不好操作 dom。
    ClericPy
        4
    ClericPy  
       2019-10-07 10:27:26 +08:00
    我 cdp 操作 DOM, 各种 NodeID 烦死了, 最后还是用注入 JS 方式操作的 DOM... 那个 pyppeteer 作者也直接用的 JS, 有个 issue 专门解释了, cdp 操作 DOM 性能不行
    jowenzzzzz
        5
    jowenzzzzz  
       2019-10-07 10:32:25 +08:00 via Android
    @ClericPy tampermonkey 有没有哪里可以学习的教程,不会熟悉 js。弄起来还有点麻烦。我现在只会用来做登录。
    qazwsxkevin
        6
    qazwsxkevin  
    OP
       2019-10-07 10:42:45 +08:00
    @Karpov @ClericPy @napsterwu @ClericPy @jowenzzzzz
    感谢各位老大热心肺腑的指导思路,
    我自己也是用 firefox 的,老早有想法想找一个现成的 xpi 扩展,或者游猴脚本,触发一下就直接输出网页源代码保存到指定的文件夹,后来一直都没找到这样现成的 xpi,加上当时的欲望并不强烈(主要是我工作是搞数据通信传输的,并不是前端开发领域,搞 firefox 自定义扩展、脚本需要对浏览器的 DOM,JavaScript 功底比较好,对于我来说,这个学习成本也许有些高),所以这事情后来不了了之,你们的思路是对的,应该从浏览器本身着手,也许我真的应该要认真去翻一下 JavaScipt 和 Firefox 的 API 了。。。
    ClericPy
        7
    ClericPy  
       2019-10-07 10:46:04 +08:00
    @jowenzzzzz 先熟悉 JS https://zh.javascript.info/ , 其实如果有其他语言基础, 直接看 mozilla mdn javascript 是最权威的. 前几年可能我还推荐下 阮一峰 廖雪峰, 现在基本不会推荐看教程了
    再看 tampermonkey 文档, 对于不成规模的爬虫, 这么个扩展已经挺够用了, 内置了一大些自动化东西
    ClericPy
        8
    ClericPy  
       2019-10-07 10:48:06 +08:00
    @qazwsxkevin 火狐... grease monkey... 怀念... 反正这些大浏览器都可以开远程调试模式用 websocket 通信, 没问题的. 至于学习成本, 还是跟着最着急的需求来, 什么熟悉用什么吧
    liyoubin37
        9
    liyoubin37  
       2019-10-07 16:28:48 +08:00 via Android
    既然会 python,也知道 selenium,那么只要再搜点 python 注册热键的代码,整合起来。用 selenium(python 脚本)启动浏览器,人工浏览到感兴趣的页面时,按一下热键,此时 python 会收到通知,把页面保存下来不就完事了?
    kingfalse
        10
    kingfalse  
       2019-10-08 08:04:32 +08:00 via Android
    jxbrowser 了解一下?这个是 Java 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2830 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:27 · PVG 11:27 · LAX 19:27 · JFK 22:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.