美文网首页Python开发程序员今日看点
Python实现的站内消息群发助手-V1.0

Python实现的站内消息群发助手-V1.0

作者: 向右奔跑 | 来源:发表于2016-12-17 15:54 被阅读440次

    四个月前写的一个小功能,跑通了,没有正式使用。《用Python打造一款简信助手--简@(V0.1)》。只是完成了能发送站内消息(简信)-- 提交表单的功能,主要有一个参数获取时比较麻烦,不能从一个用户的主页中直接获取到发送消息时对方的id,当时是手动获取这个值。昨天完善一下,试用OK。

    需要的参数 /chats/7094551/chat_messages ,chats后面的整数,就是发送对方的id。而这个id在设计时并不是打开对话页面的id: mail_to,如:

      http://www.jianshu.com/chats/new?mail_to=2899894
    

    这个id是通过访问mail_to页面(消息对话页面)表单中的一个值。而mail_to页面的url获取,在用户主页下,有一个“写简信”的标签可以取到。

    简单说,也就是要从用户ID能获取到简信ID。而这个过程需要经过发送两个请求,经过两个页面,解析不同页面数据,来获得这个参数。总结一下流程:
    1)访问用户主页获取写简信chat/new?mail_to=xxx的url;
    2)访问chat/new?mail_to=xxx对话页面,从页面表单中action=中解析获取发送到对方的id;
    3)构造发送简信表单数据,发送。

    获得chats/id/messsages

    代码:

    def getPostId(url):
        html = getHtml(url)
        soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8')
    
        links = soup.find_all('a')
    
        # 登录状态 Cookie登录
        # 从用户主页 解析出来简信对话的url : http://www.jianshu.com/chats/new?mail_to=3258479
        posturl='http://www.jianshu.com'+links[37]['href']
    
        # 登录状态 Cookie登录
        # 打开简信对话url, 解析出发送简信的ID, 即获得 action="/chats/7094014/chat_messages" 中的数字
        html = getHtml(posturl)
        soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8')
    
        links = soup.find_all('form')
    
        us = links[0]['action'].split('/')
    
        return us[2]
    
    

    注意以上的页面请求,都是要在登录状态下发出,不然获取不到相应值,造成第二次请求错误。登录仍然使用Cookie方式。


    PS:
    简书 @IT·互联网专题 用户关注量从4个月前的8万多,到上周已突破26万。
    专题新增一个编委 **创业人张涵 **,居然是一位95后的创业者。欢迎勾搭。

    Python实现的站内消息群发助手-V1.0

    相关文章

      网友评论

      本文标题:Python实现的站内消息群发助手-V1.0

      本文链接:https://www.haomeiwen.com/subject/runomttx.html