数学建模社区-数学中国

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

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

6 S0 ]. i" q! _& ]5 |7 V( b6 V[code=python]#!/usr/bin/python& E" a% k/ K6 j3 G
# -*- coding: utf-8 -*-
: A3 s' u; ~& J$ r0 ^2 C5 l* h
  \4 t. n" N9 Mimport tkinter as tk
$ S9 p1 y9 T2 u8 s( tfrom tkinter import filedialog' H; G% i6 P. S
- z$ V( Y$ G# w$ S2 S2 S, y: h/ M
import requests
. t6 O4 B0 x* Zfrom urllib3 import encode_multipart_formdata
6 t+ E" y  |, [- V
: D2 [9 O! k/ U) A3 m9 X; _- ]from os.path import basename
5 J# X$ V( _/ `5 F6 _3 c1 m$ E8 |) t/ V" [
from PIL import Image
  [" L% R9 C! Z- v* r  x% V
" X. o  i6 z6 U6 f& A9 y4 E. @- J
8 x0 I# g# A; ]; A1 F) x# Qdef getmidstring(html, start_str, end):
2 U, \, U) c/ n3 ^2 `5 l3 c: R9 ]    start = html.find(start_str)
% E2 p. f# P" \7 a) r, v    if start >= 0:* _5 f" V7 s; e. Q, C
        start += len(start_str)0 o, X6 I. Q9 Q& _0 c- G( x
        end = html.find(end, start)% m; G7 X7 s! O% ^& R" \
        if end >= 0:
, ?5 b. w9 \2 ]5 w# t5 A, K7 W            return html[start:end].strip()7 b5 h8 |$ f% m' J- r

/ f2 e& w2 X: w( L* B# Y, _9 P) ]" Y+ z1 ^' `
def getTextLeft(html, end):6 @5 e! L4 ?2 m. K' E' F
    start = html.find(end)
' v7 }3 S3 ^8 f6 C    if start >= 0:) J* v3 D7 e- S* R; J3 m) P( _
        return html[0:start].strip()1 n# ^+ Q/ B6 H/ Z* r. c! {: F
. i+ y6 \* w7 `# P7 ^# p, T, u# w

( f- Z) u- t6 y  |; P$ ?root = tk.Tk()' L( v* r/ v4 x& F
root.withdraw()9 S! v1 B$ e4 W+ m
, z( @4 @! V. v
filetypes = [(
- R) @8 I& {) X2 |: O& m2 B    '图片文件(*.jpg;*.jpeg;*.gif;*.png;*.bmp)', '*.jpg;*.jpeg;*.gif;*.png;*.bmp')]
. p  o- H5 {$ cfile_paths = filedialog.askopenfilenames(filetypes=filetypes)! c9 o( m; i. c% \9 T, ~

7 x% K3 _4 K% \$ g6 Cfor file_path in file_paths:3 r. F/ P, q' B' |' k% S2 e
    print(file_path)3 U! _3 i* q0 h' F3 P

8 C4 V5 g8 I/ e1 }0 W3 x    im = Image.open(file_path)
* @) m8 b+ a+ I4 ~. ]+ U! D    print("image/" + im.format.lower())
: {( m. j5 [' ~0 V6 K0 L0 {% o( {3 f6 y5 h
    with open(file_path, mode="rb") as f:
! u: Z7 b% D1 v# r6 ]# F        file = {
+ ^" @7 l6 Y$ V' w* F- ?; H            "flag": "1",) {) J- t) {/ \' Q$ J) V! B
            "pic_path": (basename(file_path), f.read()),
/ J! F5 g9 H4 K% ?1 x3 O5 Z3 o        }" n1 j5 L- S& ?, c* J4 @& D& u! G
        encode_data = encode_multipart_formdata(file)/ e, P1 h! }1 d, N

6 ~$ ^# |8 {5 z( ?$ B        file_data = encode_data[0]
9 s# L* a% v3 T0 U& }. A0 n. ~& Z, K0 {9 ]
        print(encode_data[1])
0 N2 x: r: a6 K% j0 i0 i4 c2 o$ {8 @. I) V6 m5 M( V
    url = "http://pic.sogou.com/ris_upload"
2 C& T0 C6 j! x3 Y    headers_from_data = {2 m/ M! X) L$ C, F6 `9 G% o$ M
        "Content-Type": encode_data[1]' y$ W8 C# H" P+ Y' u" G
    }
; A% r& G, G! N1 G    response = requests.post(
" E. B; b' G  b' j5 A  v        url=url,
# }" g1 T+ D  K* l        headers=headers_from_data,3 |% L3 c+ r  \. R5 t6 X, T
        data=file_data,2 \/ \4 N* N  J; Y0 K4 E! S/ ?
        allow_redirects=False)/ I( g$ B8 |% n3 M6 C7 g. t: W
    response_text = response.text
. D+ d& p4 F7 p    start = response_text.find("<a href=\"")8 c% i8 V* s! v, @
    start = getmidstring(response_text, "<a href=\"", "\">")& E. l3 i7 p5 \$ s2 D6 V
    print("相似图片:" + start)2 ~) ?, M- F8 X+ ?% P- k0 H) v; F
3 B% i* ?3 L/ @& M
    start = getTextLeft(start, "&oname=")
# A4 o; z  |) X) |    start = start + "&flag=1&reqType=ajax&st=12&reqFrom=result"- I$ [9 `7 s- a& U  i

4 R$ C0 |* G) e0 R5 u    start = requests.get(start).json()) W" h6 |; E" v( v1 L& @9 w
    print("上传的图片:" + start['query'])
+ C0 n- z* A$ b$ ]! A( \[/code]
: b, _9 V* t# S$ z; o5 l
6 [! A( t9 @) x% \4 V转发自派生社区
1 Y+ w$ D" p% R8 F& P. [




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