微信爬虫实践
2018-07-11 本文已影响102人
蜡笔小姜和畅畅
Screen Shot 2018-07-11 at 9.24.24 AM.png
概要
使用requests和BeautifulSoup来进行微信爬虫,实现登录和收发消息的功能。并且会介绍微信的具体业务流程和flask框架。
具体内容
- flask
- session
赋值
ticket_dic = session('ticket_dic')
获取值
ticket_dic = session.get('ticket_dic')
- jsonify
flask接口返回json格式的数据
return jsonify(response)
- request
定义一个请求方法
def login(): if request.method == 'GET': 请求的内容
- render_template
渲染一个html页面,也可以传入数据
return render_template('login.html',qr_img=qr_img)
- session
- 登录流程
- 获取二维码图片
- 扫描二维码,拿到用户头像
- 确认登录,获取用户信息,可以接受消息
- 获取好友列表
- 发送消息
sender(id) -> receiver(id)
- 其他注意事项
- 用户凭证ticket
xml解析
def xml_parser(text): dic = {} soup = BeautifulSoup(text,'html.parser') div = soup.find(name='error') for item in div.find_all(recursive=False): dic[item.name] = item.text return dic
- cookie
session['ticket_cookie'] = ticket_ret.cookies.get_dict()
- 正则(re)
获取http链接
redict_uri = 'redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=ARG5rXcGrb1FB-YaT3qeviuc@qrticket_0&uuid=QYKZ2sJyhw==&lang=zh_CN&scan=1530675611"'
使用正则去掉‘redict_uri =’
redirect_url = re.findall('redirect_uri="(.*)"',redict_uri)[0]
- 防盗链
请求头hearder加入‘defer’字段 - 消息发送编码问题
请求使用json=
r = requests.post( url=msg_url, json=msg_data )
- 用户凭证ticket