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

四个月前写的一个小功能,跑通了,没有正式使用。《用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获取,在用户主页下,有一个“写简信”的标签可以取到。

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

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

《Python实现的站内消息群发助手-V1.0》 获得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》 图片发自简书App

点赞