- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563293 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174211
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
python爬虫入门教程:爬取网页图片
5 i7 ^6 ^; n( z, r l9 k4 X& a2 j8 ~8 W
在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程:& O! @" m( q; G! p% [$ c
4 Z! M( k) C. J+ }! C. F- x准备工作
4 W; @3 L% j, o" J! f9 `1 V) I, O语言:python9 { {, p/ }( o1 A, Y6 T( @
+ y/ E+ t4 v4 e8 O1 P" t2 hIDE:pycharm
. f5 `, f6 z8 g2 [ G
) n* ^; ~( z) R1 p首先是要用到的库,因为是刚入门最简单的程序,我们主要就用到下面这两:
" D/ D, O- h6 V( n' ?7 J% c6 B0 W5 @9 j- @$ W/ `0 ^- Z
import requests //用于请求网页0 F5 N! y$ Y J& @: E r' @. ^- }
import re //正则表达式,用于解析筛选网页中的信息2 b" P! b" P) U {% @# q
其中re是python自带的,requests库需要我们自己安装,在命令行中输入pip install requests即可。
/ |; c. {3 A$ Y, O4 ]" `
+ S) m# D0 K" ~8 j然后随便找一个网站,注意不要尝试爬取隐私敏感信息,这里找了个表情包网站: n8 f! m( [. ~
7 ^0 J$ o: W7 z! A注:此处表情包网站中的内容本来就可以免费下载,所以爬虫只是简化了我们一个个点的流程,注意不能去爬取付费资源。) q0 l8 k" w$ C: P
7 S5 o0 H4 Y! }- L8 [8 Q- G
: o, e, O+ _) j; K2 A: \# [# f
4 J3 o& l# h1 q8 W9 J8 }
我们要做的就是通过爬虫把这些表情包下载到我们电脑里。
/ |: ^7 T, Z! U8 `/ A' Z& C4 d
- A8 [; C9 r/ U# ~编写爬虫程序
- G5 c4 @0 `/ ~0 p" n0 W' l1 l首先肯定要通过python访问这个网站,代码如下:8 b- H j5 W6 v; P3 {2 ]0 c* L' E
& X* {- \. m7 b7 z b: gheaders = {) @( s/ p9 y; }* ~) ~! B
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
# Y+ y6 m3 n" q! S3 s }
0 l+ b; F7 t+ ]& U% kresponse = requests.get('https://qq.yh31.com/zjbq/',headers=headers) //请求网页+ h/ t4 q/ q# J! V
其中之所以要加headers这一段是因为有些网页会识别到你是通过python请求的然后把你拒绝,所以我们要换个正常的请求头。可以随便找一个或者f12从网络信息里复制一个。
6 ?6 ^. l9 q. z8 g& u% _ g$ G" ^( E
1 p/ Q* P# {8 H% k
$ j2 g, s0 F |6 [( D
$ @* H R/ a# O: P k然后我们要找到我们要爬取的图片在网页代码里的位置,f12查看源代码,找到表情包如下:" P. X2 J1 s2 a0 Z; j- A& ^5 \
}# V2 E+ j; Z. _# Q c
3 e) f( D; l. z! {
' y m5 [' o! J. j- _ 然后建立匹配规则,用正则表达式把中间那串替换掉,最简单的就是.*?8 w f% U4 H/ t0 g; M
" d& ^# m2 W# Q8 ct = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'* s' o: K$ z! V6 W) f5 u/ t/ l0 U
像这样。
$ Z1 C3 Y8 J8 o) R) i0 a
6 ?: Q( T' D! \然后就可以调用re库里的findall方法把相关内容爬下来了:
9 {+ Z) f. Q. R# J! u) B* Y8 F) ~6 ~7 |+ |( v
result = re.findall(t, response.text)
' y) r! S" v, [& V& I2 ~4 w返回的内容是由字符串组成的列表,最后我们经由爬到的地址通过python语句把图片下下来保存到文件夹里就行了。0 U4 S6 D; m* D, c G* ?
, ^" [8 I. l8 n( s6 C# b4 O6 A5 O% ? U' n程序代码
# ^- n1 R2 Y* \! @import requests& U2 }- F" G, j: R- f; S3 `# Y6 V9 _
import re
- H8 C8 ^5 ?7 ~. o+ E Kimport os
, S+ n* w9 y9 |; {8 N. d
8 F) B+ H/ z* n$ K6 yimage = '表情包'
/ j! A( z5 S& c. J, k; Mif not os.path.exists(image):
" D3 i, E) I- S8 I0 Y6 \1 J os.mkdir(image)$ M0 w$ Y: |2 t; E1 E
headers = {/ F) W' z7 g! k
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'. {9 x8 a* X ^, @8 S
}
- u: F0 H' z* c3 e# k% V! t5 \( k8 rresponse = requests.get('https://qq.yh31.com/zjbq/',headers=headers)
4 S. r1 D, v% f$ q* S% I8 N: o S/ iresponse.encoding = 'GBK'/ L6 r" l6 G" H8 g+ n
response.encoding = 'utf-8'
7 V7 {; X: n* y& a' E4 U2 Eprint(response.request.headers)
C9 e3 m1 S" a4 Eprint(response.status_code)
* F) W, t! \ x+ q4 X" Ot = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'
?8 S: z i* ?result = re.findall(t, response.text)
3 M* s7 C/ m7 A4 [3 o" C: ifor img in result:& }! o8 U- `& x8 D
print(img)
1 R2 ~6 v, n+ y res = requests.get(img[0])& o; I3 |# z0 R5 m F
print(res.status_code)& x. b7 h$ V& N/ ]
s = img[0].split('.')[-1] #截取图片后缀,得到表情包格式,如jpg ,gif
; _5 ~" B3 @$ _ with open(image + '/' + img[1] + '.' + s, mode='wb') as file:
$ |6 X! _: `/ O file.write(res.content)
5 n& u; g" ?8 M* [, q) M$ E最后结果就是这个样子:& \' \7 e: L4 ^5 \" F
: n$ I" N+ q2 p+ L3 g1 `
n0 ^0 N' ^' g- l7 A( B6 ~————————————————
( f$ W) I; T' `8 k" G版权声明:本文为CSDN博主「plexming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
7 B5 i- O$ q! |% X& ]1 i原文链接:https://blog.csdn.net/qq_46145027/article/details/123969044
! f; g) y5 c% ^/ c1 P4 p; V
6 ?% a) ~$ ^9 v6 t; C
3 t/ S) p U, w: b! T |
zan
|