- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565610 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174906
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
python爬虫入门教程:爬取网页图片
0 _; P* G2 U" ~) _/ L* @. U. }5 k4 K
在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程:% p* }* O$ b8 \# `! k, w
8 p$ ^1 p7 x& ~' I# y/ l W, {: d; ]准备工作
3 V+ Q2 N/ g7 S; v$ H1 N语言:python
i9 D, i Z& r% r6 M2 f
, @! A% U9 Q5 F! S4 z) V- d6 n( w2 {: IIDE:pycharm
* H+ q$ ^( k% n& L* J4 X+ q9 n3 l- B' K4 o; @: z
首先是要用到的库,因为是刚入门最简单的程序,我们主要就用到下面这两:; |" y* w, O+ u5 G
. W3 x, g3 O# ~0 w8 B! C0 S
import requests //用于请求网页: \4 B3 |0 e" E5 e# k e2 o
import re //正则表达式,用于解析筛选网页中的信息
, j9 V: @, ]* y其中re是python自带的,requests库需要我们自己安装,在命令行中输入pip install requests即可。
# d p4 V& q- f& e4 {* @: _0 \1 u; j' m' E# z/ H7 e; D
然后随便找一个网站,注意不要尝试爬取隐私敏感信息,这里找了个表情包网站:# B: P& k; Z) R6 K# x
! J7 k' n: A. `1 Q5 k; [- e( i$ s
注:此处表情包网站中的内容本来就可以免费下载,所以爬虫只是简化了我们一个个点的流程,注意不能去爬取付费资源。1 n2 U) M& G" O# O( Z) n% R
) |" k8 |& x( b# G, d3 |6 ^& r. U; i; V. g$ G5 R6 K
! }& N. y, h8 M7 a+ Q/ j5 Y9 [7 m
我们要做的就是通过爬虫把这些表情包下载到我们电脑里。
$ r% {( C9 G1 a5 j, P0 T' s
% j3 @ R1 h/ @ x1 d/ Y编写爬虫程序- U7 E9 \" `& h5 T+ {
首先肯定要通过python访问这个网站,代码如下:' S/ i) u* L0 h, }$ V
b4 ]6 s# J. R, L1 p4 j( H
headers = {
' j5 }& w" [9 ]( P 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0': \) R4 d$ V! b1 R' p
}4 m, Q4 M- ~( P4 x' }) R* i
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers) //请求网页1 x/ Q5 I. q6 |+ n( w1 O! P: C
其中之所以要加headers这一段是因为有些网页会识别到你是通过python请求的然后把你拒绝,所以我们要换个正常的请求头。可以随便找一个或者f12从网络信息里复制一个。- E; ^7 g, h: L( \
) E- J2 M; H, D; g% O; z; P
1 |$ A* E9 V s# x- w0 n* y: s
. M0 Y$ N4 a' }) K! j3 ~: I然后我们要找到我们要爬取的图片在网页代码里的位置,f12查看源代码,找到表情包如下:9 D! S; `, O* _# H8 G
" x7 e% T% r7 D( T" g
4 g7 T7 B4 |* |% N* X
; ~' T; z/ X# C0 a& b0 `% r# P" Z 然后建立匹配规则,用正则表达式把中间那串替换掉,最简单的就是.*?
1 i5 j2 [ U, F9 G0 L/ x1 o- y% L4 r" R5 g
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'6 a! ^4 V y0 p* Y6 k6 X% |
像这样。
% M0 {) s9 J% P! R6 N7 |. `7 z% h/ Q B6 U# |3 o$ p
然后就可以调用re库里的findall方法把相关内容爬下来了:+ N+ y' b1 W% t+ D8 N* B! {
1 e$ J8 Q5 ?! r; W( rresult = re.findall(t, response.text)
" v( V$ E1 L% H# N+ G; N) N返回的内容是由字符串组成的列表,最后我们经由爬到的地址通过python语句把图片下下来保存到文件夹里就行了。
; I0 f/ g% D- b$ X# Z" J
* h. I8 `! Z" l7 `+ G# A3 G程序代码6 _5 W/ v) ]) n0 h0 g
import requests# E+ G. F, B- K. L M0 V
import re. Q, I1 p, j+ b# @; E; D; q
import os/ r4 X0 d+ l% K+ f4 j
( d% o8 p& ]0 Oimage = '表情包'
! m0 s1 G7 R8 gif not os.path.exists(image):# d% h b" w; X" l" J
os.mkdir(image)
$ l; R( n6 ~: c7 y. h0 Eheaders = {
" u9 n+ ~# o5 I$ `& @$ ~2 B( O 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
9 M0 E! z1 t% p8 n0 v4 u2 |1 W }2 `8 f6 ^3 A8 ~
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers)) |$ y! e/ M0 I
response.encoding = 'GBK'
3 k. v, q+ e9 F0 G) t* o ^( ^response.encoding = 'utf-8'
" i4 u1 C, Y0 \1 o4 P- fprint(response.request.headers)
# s' k& _$ g1 F( u8 b, `5 Yprint(response.status_code)
, h0 R' s- c* W) P- wt = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'
* ~# |& P) A9 E5 ]# P7 L5 uresult = re.findall(t, response.text)
5 ]4 M' l' ^ C2 W; tfor img in result:" x( X/ G* w, ^0 ]: ~2 f
print(img)
, K6 Y! |" d5 e% B3 P$ Z res = requests.get(img[0])
" {+ I5 }1 R& @! I7 B4 @; e: O print(res.status_code)
1 k+ H. s( L2 f$ o- Z* H; e4 } s = img[0].split('.')[-1] #截取图片后缀,得到表情包格式,如jpg ,gif# L) y7 H' _& q3 a! A8 J6 t8 o5 ~
with open(image + '/' + img[1] + '.' + s, mode='wb') as file:$ X' j$ `' r* ?% ^) b! s1 I6 U
file.write(res.content)( G4 I: w- U7 `& d( j( {. @- E
最后结果就是这个样子:8 c* w; l, i# o6 v! j* ~
/ ^$ r* L, V" T9 C& V) _5 F7 a& |
1 v0 d% o5 h$ M. `( h————————————————- Q6 _) F" E: |7 o! r, `
版权声明:本文为CSDN博主「plexming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
; }+ J/ o" g$ K& Z原文链接:https://blog.csdn.net/qq_46145027/article/details/1239690447 i- Z; X& J- ~. m: h8 U
% p; K" q- d) Q/ n! _
* s$ |" O! r& D6 a# [9 Y; W |
zan
|