数学建模社区-数学中国

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

作者: 檀俾九    时间: 2021-1-11 08:42
标题: Python-搜狗post上传图片
5 f! }! E. \- h- f9 O% y
[code=python]#!/usr/bin/python
2 O8 |, k* D3 U# -*- coding: utf-8 -*-" l2 s5 R% H% Q1 @  r

5 B1 }' W! L( h& |  ximport tkinter as tk
& y, A2 x$ x- }from tkinter import filedialog
4 U7 k1 ^9 Q) r- O9 W3 P
* i: g9 z$ }3 D5 l3 n/ Ximport requests( R* X" r  l# s" L/ E/ ]& W: c
from urllib3 import encode_multipart_formdata$ w* T9 H7 z4 ]( M# {/ z% H

% p6 |# K. T) |' `9 B7 Y6 K  ufrom os.path import basename
* b5 i7 f7 r6 I
. h, l8 v& A# ifrom PIL import Image9 q9 Z- e8 e, L7 m. m. ^+ |9 }

7 l8 [3 r/ o6 d/ Q1 A
8 p8 o+ p8 p3 O5 K; Jdef getmidstring(html, start_str, end):, W0 W" ~) b* T* U2 V
    start = html.find(start_str)
( ?7 P2 f1 x7 |7 j5 x    if start >= 0:
' b  m3 d: M4 D6 n5 k4 o        start += len(start_str)
4 K; h$ x; ?; ~% ~5 {' m% s* p        end = html.find(end, start)
0 U8 O3 a: [6 e$ X. A7 u5 f+ R        if end >= 0:
4 o3 h" F" [' W6 ]$ v            return html[start:end].strip(). W& o5 B9 Y" h4 {& i$ O

; B% s+ e8 q* O! u8 `* w. j" r/ a3 _1 Z; S$ G& T
def getTextLeft(html, end):8 r/ o7 o" d! w) K1 O( [" P5 N" k' M
    start = html.find(end)
, r, ]5 o" O( f; I    if start >= 0:
& I" f% M& Y" t3 ~' P        return html[0:start].strip()! x1 Q0 S" E3 ^( g

5 Z' i" d/ b8 O7 m/ y
2 e* J& K- A  c5 broot = tk.Tk()
4 Y5 `$ O0 L: h3 y7 X) d  v; H# xroot.withdraw()6 E6 s+ `4 J- N. n5 m
' ~5 I$ w! {; P$ y- ~' k
filetypes = [(, s; H" L' i. G6 W1 Q1 J& _1 g
    '图片文件(*.jpg;*.jpeg;*.gif;*.png;*.bmp)', '*.jpg;*.jpeg;*.gif;*.png;*.bmp')]
/ C5 F. x; ]& N( k# ^- y! o3 a9 Gfile_paths = filedialog.askopenfilenames(filetypes=filetypes)( c6 f6 u) `6 j9 ?5 h: H, y  D7 ^
7 h7 Y% K% T- L2 d9 H7 u4 d
for file_path in file_paths:) V* S6 w6 B& P/ p" l% k
    print(file_path)% w4 z# a- K# z

# E6 M5 `2 P7 D4 f" }2 A    im = Image.open(file_path)
* K7 L' B# Y& S+ k& ]    print("image/" + im.format.lower())1 B, {  F. `0 r" L$ a
; u- v0 F1 ^8 m5 T* v8 `1 }
    with open(file_path, mode="rb") as f:! l- ]' M, E( a$ L3 U& J: r; X
        file = {
& q% Y) f1 S+ r  ~. j6 F+ M# Y            "flag": "1",
. i# b% v0 ?$ C8 b+ O+ K            "pic_path": (basename(file_path), f.read()),0 Y. q' J: s4 [  a
        }0 @2 d6 R5 v; F8 O3 V9 A
        encode_data = encode_multipart_formdata(file)
% B8 l, q' T, D, g
: t# G& D, i2 f$ S        file_data = encode_data[0]
: ~0 H8 c6 n( R! \; ~9 F  \& ^* c% O0 c0 B
        print(encode_data[1])6 b5 ^4 O' V) Z) ~2 S

! o* B/ |) C, a  T" }+ d& y7 d    url = "http://pic.sogou.com/ris_upload"
. Y0 W$ I$ c. [! m6 K    headers_from_data = {1 m  i' U* H& D7 b6 f, I
        "Content-Type": encode_data[1]% w% a5 g# h4 z% @) L
    }7 Q. |) d. m2 N* ~5 O$ K. Q1 T- N1 |
    response = requests.post(, p$ z3 M5 D$ s9 I
        url=url," \/ o3 P% i) X) |; k0 s
        headers=headers_from_data,; C: _6 u/ X  s+ S# H3 [7 y% J
        data=file_data,# z! ?6 |7 R. a0 r
        allow_redirects=False)
# `6 P8 L2 r# K2 o6 p! E    response_text = response.text
3 |# t6 l+ y6 m) n: q    start = response_text.find("<a href=\"")
/ k! [5 ^) [' ?1 \    start = getmidstring(response_text, "<a href=\"", "\">")
8 [# S. Q& i* N# o, S8 P$ t/ ]! A    print("相似图片:" + start)2 z0 r, m+ m% z6 f& v7 \
9 ~0 G* H0 `0 x* L" h6 d7 C7 m; \3 D+ X
    start = getTextLeft(start, "&oname="). M9 f3 [1 q2 v' `8 C2 S) c, e
    start = start + "&flag=1&reqType=ajax&st=12&reqFrom=result"
: n3 d" Y; L" K- `- T* _
+ @% r: C' a. b4 ?$ }2 t    start = requests.get(start).json()7 m+ @; ^" Q! I, _( l7 R
    print("上传的图片:" + start['query'])8 P: O8 m0 u$ o& {+ s- P
[/code]
2 V" V" H8 W5 j. B8 ?/ Z" G$ i- @
转发自派生社区
% a# Q! y; D* e- l- Q




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