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

大家说说 Python 和 Java 混合开发的一些方法吧

  •  
  •   backfrw · 2017-04-13 23:18:04 +08:00 · 4492 次点击
    这是一个创建于 2540 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自黑如我,毕业都给自己挖坑,前段时间交了毕业设计的开题报告,本来打算就 java 写个网站,老师说不行,太简单,改报告。。。
    用 python 写爬虫,通过关键字爬取信息,存数据库,用 java 的 SSM 框架写个后台,从数据库获得关键字相关的信息展示在页面上,之前想的是关键字通过 java 存数据库, python 从数据库拿关键字爬网站,算是通过开题报告了

    等真正开始写才觉得不对,主要流程上 java 怎么在 python 结束后运行,就把自己想死机了。。。。

    长期潜水看v2ex学姿势,大佬们能不能讲讲怎么开发比较容易啊?
    目前是 python 小白,正在一边看教程一边写
    33 条回复    2017-04-17 02:00:58 +08:00
    incompatible
        1
    incompatible  
       2017-04-13 23:39:11 +08:00 via iPhone
    Java 和 Python 各跑各的,共用同一个数据库而已。
    backfrw
        2
    backfrw  
    OP
       2017-04-13 23:46:23 +08:00
    @incompatible 是的是的,但是使用上是用户先设定关键词,放数据库,爬虫根据这个关键词找数据,存数据库,页面再展示,,,, python 小白,不知道怎么 python 怎么能马上知道数据库有关键词可以跑了,和后台不知道什么时候有新数据可以展示了,,,比较懵逼
    yuelang85
        3
    yuelang85  
       2017-04-13 23:55:37 +08:00   ❤️ 1
    @backfrw 可以考虑用进程间通信,发个信号量就行了。

    不过我不能理解你为什么要用两门语言
    backfrw
        4
    backfrw  
    OP
       2017-04-13 23:58:39 +08:00
    @yuelang85 恩恩,我去研究下,谢谢
    用两门语言是因为老师不给过开题报告,说 Java 的 ssm 写网站太简单了
    misaka19000
        5
    misaka19000  
       2017-04-14 00:04:36 +08:00 via Android
    RPC 可以吗?
    backfrw
        6
    backfrw  
    OP
       2017-04-14 00:06:17 +08:00
    @misaka19000 没有接触过,得研究下,谢谢建议
    sagaxu
        7
    sagaxu  
       2017-04-14 00:14:34 +08:00
    @backfrw 套个 grpc 或者 thrift 就不简单了?
    luban
        8
    luban  
       2017-04-14 00:18:16 +08:00
    方法使很多,但是为什么要用两门语言, Java 写爬虫不行吗,或者 python 写网站?
    backfrw
        9
    backfrw  
    OP
       2017-04-14 00:19:13 +08:00
    @sagaxu 两个都第一次听说,,就不简单了的意思是很难吗?汪的一声哭出来。。。
    backfrw
        10
    backfrw  
    OP
       2017-04-14 00:22:06 +08:00
    @luban 一开始说 java 用 SSM 写网站,老师不让过,说太简单,然后改来改去就脑子一热坑了自己
    backfrw
        11
    backfrw  
    OP
       2017-04-14 00:23:28 +08:00
    @luban 麻烦大佬随便来两种比较原始的实现方法啊?看了楼上大大们说的 RPC ,要用的话得从头学,感觉会再坑自己一次
    ipconfiger
        12
    ipconfiger  
       2017-04-14 00:57:45 +08:00   ❤️ 1
    用 redis
    mhycy
        13
    mhycy  
       2017-04-14 01:01:37 +08:00   ❤️ 1
    Java Web 后端在收到爬虫请求后写入到数据库,并发送到队列
    Python 爬虫监听队列,并执行

    两个服务都是持续在线,利用数据库和队列解耦
    incompatible
        14
    incompatible  
       2017-04-14 01:11:38 +08:00 via iPhone   ❤️ 1
    @backfrw Python 轮询数据库里的关键词表就行了。别做 RPC , RPC 根本就不是干这个用的。
    backfrw
        15
    backfrw  
    OP
       2017-04-14 01:18:00 +08:00
    @incompatible 好的,谢谢大佬建议,似乎逃过一坑
    backfrw
        16
    backfrw  
    OP
       2017-04-14 01:19:22 +08:00
    @mhycy 我下去研究下, 谢谢大佬建议
    Mogugugugu
        17
    Mogugugugu  
       2017-04-14 01:35:42 +08:00   ❤️ 1
    最原始的办法就是 数据库 里面加一个标志位,标志爬虫是否爬取完成, Java 每次请求数据库 先判断标志位是否是完成,如果是前取值展示。反正这俩都要读取数据库的,这是最原始的办法了。
    Tneciv
        18
    Tneciv  
       2017-04-14 01:44:30 +08:00 via Android   ❤️ 1
    上 mq 啊
    fy
        19
    fy  
       2017-04-14 01:48:44 +08:00   ❤️ 1
    哪有那么多高科技啊?轮询不就完了……
    ChasYuan
        20
    ChasYuan  
       2017-04-14 09:22:58 +08:00
    那看来我专业毕设要求比较水了。仰望楼主。
    gcli
        21
    gcli  
       2017-04-14 09:47:26 +08:00
    果断上 mq
    bk201
        22
    bk201  
       2017-04-14 10:33:53 +08:00
    建议上 storm ,瞬间开题报告高大上
    backfrw
        23
    backfrw  
    OP
       2017-04-14 10:51:00 +08:00
    @Mogugugugu 大佬你这个办法我喜欢,看上去很简单,谢谢啦
    backfrw
        24
    backfrw  
    OP
       2017-04-14 10:51:32 +08:00
    @Tneciv 原谅小白没有用过,回头看看,谢谢啦
    backfrw
        25
    backfrw  
    OP
       2017-04-14 11:00:04 +08:00
    @bk201 没听过,/(ㄒoㄒ)/~~我回头看看,谢谢
    backfrw
        26
    backfrw  
    OP
       2017-04-14 11:01:52 +08:00
    @fy 谢谢大佬,可以的
    backfrw
        27
    backfrw  
    OP
       2017-04-14 11:18:51 +08:00
    @ChasYuan 哪里哪里,只是自己坑自己,都快坑高潮了
    wsbnd9
        28
    wsbnd9  
       2017-04-14 14:51:51 +08:00
    两者之间用 Rpc 调用呗
    ryV60s
        29
    ryV60s  
       2017-04-14 14:58:35 +08:00
    Java 开个( http/tcp)接口, python 跑完就访问下。
    lianxiaoyi
        30
    lianxiaoyi  
       2017-04-14 17:32:39 +08:00
    http 接口啊。。谁跑完告诉另一放就行了。。。。不过如果搞 socket 比较高大上
    backfrw
        31
    backfrw  
    OP
       2017-04-14 19:46:57 +08:00
    @ryV60s @lianxiaoyi 谢谢建议,大家给了这么多建议,已经想通,应该可以解决了,谢谢
    wanjun
        32
    wanjun  
       2017-04-14 21:33:13 +08:00 via iPad
    我的方式: cython 打包为 so 文件, jni 调用
    introom
        33
    introom  
       2017-04-17 02:00:58 +08:00 via Android
    zmq,你还想多说什么,,,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3292 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:49 · PVG 21:49 · LAX 06:49 · JFK 09:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.