数学建模社区-数学中国
标题:
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 M
import tkinter as tk
$ S9 p1 y9 T2 u8 s( t
from 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* Z
from 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# Q
def 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 {$ c
file_paths = filedialog.askopenfilenames(filetypes=filetypes)
! c9 o( m; i. c% \9 T, ~
7 x% K3 _4 K% \$ g6 C
for 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 V
6 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