python爬虫入门教程:爬取网页图片 & G' m- H# }6 n6 F; @0 ]0 O! v , N; C' p4 H) m在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程:& P$ E% t8 M0 U2 o. p
& B* M6 t( z6 w: k准备工作5 L/ T' ~' p! V, p
语言:python : I( ]' A' q. V9 e2 T. ~% h; g: F3 x
IDE:pycharm ! w# K1 W6 h0 o9 a E% i9 E' f* \# Z5 R1 B* |5 e
首先是要用到的库,因为是刚入门最简单的程序,我们主要就用到下面这两: 8 b9 w6 `, q2 {1 ]/ ?8 _, G/ }. ?7 H& H% w
import requests //用于请求网页 $ ?, `* W c4 [6 @1 h6 I* ^import re //正则表达式,用于解析筛选网页中的信息 # u7 u5 R. r3 V& r5 ~% P# Q' s其中re是python自带的,requests库需要我们自己安装,在命令行中输入pip install requests即可。 # u0 j1 \0 l0 h$ G$ x& ?' e # l& J% `" i: g, K, @然后随便找一个网站,注意不要尝试爬取隐私敏感信息,这里找了个表情包网站: 9 n$ p M3 j2 j, t5 \0 B; R1 U2 s9 A0 }8 K- A! e
注:此处表情包网站中的内容本来就可以免费下载,所以爬虫只是简化了我们一个个点的流程,注意不能去爬取付费资源。) Z- B5 M( y2 K+ p! w
0 f# H5 L: T6 H0 H5 l: l( B ; B: ^7 K5 P) ~( l- n8 O. {2 s) V5 T
我们要做的就是通过爬虫把这些表情包下载到我们电脑里。 * e5 S) W- e- S$ M( f & F, c5 n- J& ]8 S' e3 g, f9 M编写爬虫程序 . v9 z! S: }3 Y1 a首先肯定要通过python访问这个网站,代码如下:9 B5 K8 B6 r- F2 M
5 q S" i' x' f0 Y# S1 M( E
headers = {& u J1 N; z- Q3 ^% ?+ a9 u8 a0 T
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'0 ?: u6 M9 j3 w7 o2 Y4 P% W1 n
}1 b( R) u" N9 D% R
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers) //请求网页 3 s/ P5 [) e+ S0 g) U( E% x其中之所以要加headers这一段是因为有些网页会识别到你是通过python请求的然后把你拒绝,所以我们要换个正常的请求头。可以随便找一个或者f12从网络信息里复制一个。 " L5 O, ?1 y- d' m 2 ?0 ]; h) w% Q: a* L $ f/ |6 @, r6 t 2 H% k1 N4 e1 r然后我们要找到我们要爬取的图片在网页代码里的位置,f12查看源代码,找到表情包如下:: v. @& n! K$ l. [) |& G& g
z: F4 G+ l& c- t- q : D6 C, u( w% F. w6 t# V) U x0 u8 W4 n( U7 D" Q0 |
然后建立匹配规则,用正则表达式把中间那串替换掉,最简单的就是.*?7 A. N/ g8 _8 L1 p( a
) u# q5 j0 I: o- \0 Ot = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'# |1 U8 z) D; @0 |: G2 a3 L
像这样。 ! B5 Y9 L% }0 H1 z( a3 P, j/ i) N% a9 i# Z6 S
然后就可以调用re库里的findall方法把相关内容爬下来了: ! L% f, L+ S1 y2 s \; e ( T7 J" i6 n& A$ k bresult = re.findall(t, response.text)" v/ R8 Z6 U3 [" [/ M8 W# K" o& W
返回的内容是由字符串组成的列表,最后我们经由爬到的地址通过python语句把图片下下来保存到文件夹里就行了。 2 `' D% y( Y% |6 q; }7 x 5 g6 \6 Q- a" L# d程序代码; N1 g. b$ P9 S X) x% R$ x3 T
import requests7 _: i( {( f4 `' U* h
import re . P3 X. B) ~' C) ?& jimport os! s b- c7 _4 U4 x6 j2 V/ M
; {% R' `, `1 c' J3 J: [& k# Nimage = '表情包' 4 u4 ^# M- L2 B( h; Mif not os.path.exists(image):4 [1 E" x- H9 N1 P, @
os.mkdir(image)" d: i" n1 j: U/ b
headers = { 7 Y- f/ O, z7 P/ q1 ? 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'4 w* y7 w |, A3 T7 o, [# b7 }/ r
}5 X% Z' ^" k0 L6 {
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers) 4 d$ z4 T% [' X5 D6 W# i5 qresponse.encoding = 'GBK' ) _; F2 S) ?3 Q8 p; \: mresponse.encoding = 'utf-8' 8 S( t4 K8 X7 |6 V4 J7 d" Dprint(response.request.headers) 3 d2 \- x3 _- q2 c6 p5 [/ o/ z4 Qprint(response.status_code)% ?5 U* U! B$ ^. u0 z) s9 ~- ~
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'* E6 K* s) a' j% R
result = re.findall(t, response.text)+ V3 Z, ]# s7 b- p. W
for img in result:, g+ c/ Q- h# p% L* g4 c6 y( i
print(img) % [5 C: `. J0 j; d: p res = requests.get(img[0]) 3 o' T- y1 N8 y; Z6 o$ w; b3 J print(res.status_code) # Q* ~0 m- W* d9 c5 v9 [ s = img[0].split('.')[-1] #截取图片后缀,得到表情包格式,如jpg ,gif 4 j' n' |- w- k* D with open(image + '/' + img[1] + '.' + s, mode='wb') as file:! C# N# z d0 a( ~7 T
file.write(res.content)9 @& U$ b% j" ]' d) q
最后结果就是这个样子:/ s* S- \& J; r- y3 M6 s. c
' \7 k" E9 y3 i( ?/ a$ Z
5 R4 B! M0 n1 c4 U' G5 ^8 t0 H$ C———————————————— Z, a, K, d6 J u/ s! e
版权声明:本文为CSDN博主「plexming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。+ @; h5 |/ \, v) h2 l
原文链接:https://blog.csdn.net/qq_46145027/article/details/123969044 6 @- y5 f1 O% h o 2 b. ?) U/ g. c( H' J7 V- {$ q7 \% T