呼伦贝尔市网站建设_网站建设公司_响应式网站_seo优化
2025/12/24 5:14:44 网站建设 项目流程

最近一直在研究这个,希望能用微博引流,话不多说

# /usr/bin/env python

# -*- coding:utf-8 -*-

import threading

from urllib import request, parse

from bs4 import BeautifulSoup

import http.cookiejar

import json

import random

import time

import configparser

import re

import math

import os

import traceback

import requests

from requests_toolbelt import MultipartEncoderMonitor

from MySqlInter import MySqlInter

'''

构建公共请求头

'''

# 登录

def login(code=0):

login_url = 'https://passport.weibo.cn/sso/login'

# 构造登录参数

params = {

'username': username,

'password': password,

'savestate': '1',

'r': '',

'ec': '0',

'pagerefer': '',

'entry': 'mweibo',

'wentry': '',

'loginfrom': '',

'client_id': '',

'code': '',

'qq': '',

'mainpageflag': '1',

'hff': '',

'hfp': ''

}

params = parse.urlencode(params).encode('utf-8')

req = request.Request(login_url, params, method="POST")

res = request.urlopen(req)

result = res.read().decode('utf-8')

login_result = json.loads(result)

if login_result['msg'] == '':

print('登陆成功')

return True

else:

print(login_result['msg'])

return False

# 上传文件

def upload_pic(str, path):

try:

name = path.split('/')[-1]

m = MultipartEncoderMonitor.from_fields(

fields={'type': 'json',

'pic': (name, open(path, 'rb'), "application/octet-stream"),

'st': str

},

)

# 'cookie': "XSRF-TOKEN=1093d3;MLOGIN=1;SCF=AiDo0hUv7kdmNPD80v_FXfJF-G23i1xPrSs0dgYxnL8lg9pa22w6Ujb59CVuCAiuQNiFzikHGNhBng4vHGpu7MU.;SSOLoginState=1578974457;SUB=_2A25zGUypDeRhGeFN7VsV9CzOzz-IHXVQ4lThrDV6PUJbkdANLXj5kW1NQ_2LYBpJCyz6DjFtfia1vTqvwsOUmrO-;SUHB=08Jrg82rI3lBH9;WEIBOCN_FROM=1110003030;_T_WM=56807055301;login=9de37c72b9f15cd57c8d7fdf3f6fb3c9",

headers = {

'referer': 'https://m.weibo.cn/compose/?pids=',

'Content-Type': m.content_type,

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'

}

r = requests.post('https://m.weibo.cn/api/statuses/uploadPic', data=m, headers=headers, cookies=cookie).json()

print(r)

pic_id = r['pic_id']

return pic_id

except:

traceback.print_exc()

# 发微博

def post_weibo(str, content, picIds):

add_weibo_url = 'https://m.weibo.cn/api/statuses/update'

# 构造登录参数

params = {

'content': content,

'st': str,

'picId': picIds

}

params = parse.urlencode(params).encode('utf-8')

req = request.Request(add_weibo_url, params, method="POST")

res = request.urlopen(req)

html = res.read().decode('utf-8')

print(html)

def down_pic(url):

path = "img/"

split = url.split("/")

file_name = path + split[len(split) - 1]

try:

# print("缓存图片中-> " + url + "\n" + "保存至-> " + path)

r = requests.get(url)

file_size = r.headers["Content-Length"]

with open(file_name, 'wb') as f:

f.write(r.content)

f.close()

except:

traceback.print_exc()

return file_name

def auto_post():

try:

sql = MySqlInter(db_config)

build_opener()

is_login = login()

if is_login:

str = get_st()

row = sql.get_available_weibo(3051943081)

print(row)

id = row[0]

content = row[4]

pics = row[7]

pic_ids = ""

if pics != "":

pic_list = pics.split(",")

for pic in pic_list:

file_name = down_pic(pic)

pic_id = upload_pic(str, file_name)

pic_ids += pic_id + ","

post_weibo(str, content, pic_ids[0: len(pic_ids) - 1])

sql.update_weibo_state(int(id))

except:

print("此处发图任务失败!")

timer = threading.Timer(7200, auto_post)

timer.start()

if __name__ == '__main__':

auto_post()

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询