数学建模社区-数学中国

标题: Python-搜狗post上传图片 [打印本页]

作者: 檀俾九    时间: 2021-1-11 08:42
标题: Python-搜狗post上传图片

* g8 z' p5 D  z0 n$ M[code=python]#!/usr/bin/python' E' u1 N2 d2 s$ X9 o& m7 i( T
# -*- coding: utf-8 -*-4 Y3 A/ U: t' c" l, i! j  I/ J0 M

. C4 [! g5 O0 l' R4 Dimport tkinter as tk- {! ]6 I/ o9 H0 g
from tkinter import filedialog
  L6 l; D/ G9 D( h# G
1 S. ^- x9 y. ?% D, t! Simport requests% E+ Q) x) ^( A6 r. G
from urllib3 import encode_multipart_formdata( p% |% a% G$ m

- x8 r* d5 s8 w% I  ~  wfrom os.path import basename# ]' A- ]; f; L  |8 P6 H( W

- _3 I$ Y) J1 D" y& e, \( V* [0 Cfrom PIL import Image" k" c% u$ ]$ t& l; e( j) w

* \- ~$ l" a. q9 u: t
& l& d/ u- D& a, A4 v) w' {% P1 sdef getmidstring(html, start_str, end):( [4 y, V& q0 g+ N& t, J2 p0 r
    start = html.find(start_str)) M; g* o& w  _  A5 z
    if start >= 0:' O. l% k' k' y4 R. B: P1 @
        start += len(start_str)0 v* [/ N8 m" w# z. A
        end = html.find(end, start)
$ a% p1 P& q9 v! B3 W% P% Y        if end >= 0:3 k( d, A7 p) o/ n0 t
            return html[start:end].strip()
' E7 p* R; @* E7 o( X$ R# ?2 r0 g3 w5 f/ a/ p

: g0 N0 O( R6 b* U. W. h' x) s. P& Mdef getTextLeft(html, end):8 Y# m1 H; p$ ?5 O
    start = html.find(end)
' b0 k" v3 V& X4 D    if start >= 0:
: z2 _: l, e" p        return html[0:start].strip()! ?( }% R/ A; H2 p
3 j+ V! S! S; H

- h  L5 g1 o# wroot = tk.Tk()
: ?1 \2 M/ R& @, @4 iroot.withdraw()2 U  D- t( f% _3 @* k$ |* l
! J9 C' B) ~+ N( C
filetypes = [(: l6 R2 e" Z4 s5 f5 I- K
    '图片文件(*.jpg;*.jpeg;*.gif;*.png;*.bmp)', '*.jpg;*.jpeg;*.gif;*.png;*.bmp')]
+ q8 F7 n+ F3 Pfile_paths = filedialog.askopenfilenames(filetypes=filetypes)
7 c$ e8 m4 c7 _( n9 T0 n
2 |. c2 U1 a9 M7 nfor file_path in file_paths:
* M5 V0 a0 r2 F: W( z    print(file_path)
0 F$ M6 Y+ ~/ P- w4 X/ @
5 e! E8 o& F, q    im = Image.open(file_path)
! |! q2 q; B4 h. X1 V& ]4 M4 b    print("image/" + im.format.lower())
$ h5 J' `% J; v# ?2 Z6 y
1 j9 `$ t- K0 j$ X5 C    with open(file_path, mode="rb") as f:9 @: q6 c" @, g5 x! [. `* \
        file = {
8 f& w$ w6 b8 M+ d! i# {% L            "flag": "1",
4 Q1 c9 f6 H6 c' `4 [# O            "pic_path": (basename(file_path), f.read()),, a, H* H6 H6 }4 p; x7 `9 _
        }
1 T) O$ L5 Q7 Z; _/ ?        encode_data = encode_multipart_formdata(file)
8 ]; @! k$ t  K5 }# m( V- s9 D/ x7 G8 F5 d' n
        file_data = encode_data[0]4 l0 [# D/ |8 B3 i. Q

4 d5 L* F) \0 q+ `6 a) S) F        print(encode_data[1])
) k2 v  I% U$ k+ C9 f6 w9 p7 f
3 y" }. }5 v2 N4 P9 ~    url = "http://pic.sogou.com/ris_upload"3 t& ]' T1 n" ~3 A9 R+ {/ @
    headers_from_data = {9 x8 s7 ^/ o, P, I( A
        "Content-Type": encode_data[1]! S3 Z4 h3 r: h& E
    }3 ]6 d: g; X; \. w# u. P" g
    response = requests.post(1 C7 |5 P$ P( y8 F4 C. r. P( r
        url=url,2 b- r& W: F/ K
        headers=headers_from_data,) @  O( R! |$ A+ ~6 P7 a
        data=file_data,; ]. Y) M0 U* ]- b! I
        allow_redirects=False)- d3 J" p& V; ?* W& X% m
    response_text = response.text
  a3 v8 }9 S2 {    start = response_text.find("<a href=\"")  a: i) K( h- s. {2 k- z
    start = getmidstring(response_text, "<a href=\"", "\">")7 }1 [( ~8 K8 E' N( e3 X
    print("相似图片:" + start)
' w. L' K) S/ ~. ^. K# K
+ F2 m$ V2 D3 H2 I1 Q) o6 N" x! \    start = getTextLeft(start, "&oname=")
9 Q( c3 o3 ~+ P$ m$ z$ m    start = start + "&flag=1&reqType=ajax&st=12&reqFrom=result"' X  L3 j7 L9 N/ H2 Z# @

+ ]8 y* C  j5 ]  m1 q" p    start = requests.get(start).json()+ j! F( w2 y3 \9 {0 z5 ?) [$ |& L
    print("上传的图片:" + start['query'])2 U8 x& c* `3 }& |8 P2 u
[/code]
: F& N+ K) ]0 D+ E. N/ l* i8 Y. M# [
转发自派生社区
$ f8 Y; }0 ?; I: U9 i9 l; G9 f* Y8 \




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5