数学建模社区-数学中国
标题:
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& | x
import 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/ X
import 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 u
from os.path import basename
* b5 i7 f7 r6 I
. h, l8 v& A# i
from PIL import Image
9 q9 Z- e8 e, L7 m. m. ^+ |9 }
7 l8 [3 r/ o6 d/ Q1 A
8 p8 o+ p8 p3 O5 K; J
def 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 b
root = tk.Tk()
4 Y5 `$ O0 L: h3 y7 X) d v; H# x
root.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 G
file_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. B
8 ?/ Z" G$ i- @
转发自
派生社区
% a# Q! y; D* e- l- Q
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5