- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563325 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174220
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
python爬虫入门教程:爬取网页图片 [, V% _8 x6 }6 Z
5 ^1 ^" y ^! w* l, L) P9 Z+ w- M8 n在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程:
9 v& a: o: c. {) q8 Z8 Q0 l! h( j' K/ F2 O. x# d. _
准备工作
9 D# `& D' N* A1 B2 e语言:python' t& X8 u7 K/ r8 }8 u9 r4 e, A
# h' J6 O7 p9 u3 n# g2 ?( h) wIDE:pycharm) r; F. T' g8 E Y2 y* j( M$ x# E
) X0 w7 ^$ B5 S4 Z3 c! ~! ^
首先是要用到的库,因为是刚入门最简单的程序,我们主要就用到下面这两:/ A$ e) G+ D# @: X' Y. F* V
! U8 b6 w4 S. ]4 c1 ]) ~- ^import requests //用于请求网页8 {" B5 s9 |* d- |" c4 N, i
import re //正则表达式,用于解析筛选网页中的信息
4 X q0 |3 ~! g- W! l& f其中re是python自带的,requests库需要我们自己安装,在命令行中输入pip install requests即可。3 v8 X P- a: V" w3 }& v3 B) o
% w6 Z5 \# P( C) X$ w$ n/ z然后随便找一个网站,注意不要尝试爬取隐私敏感信息,这里找了个表情包网站:
/ b2 q9 Z* B% d7 V2 e. a8 A6 }9 n1 l% h) B
注:此处表情包网站中的内容本来就可以免费下载,所以爬虫只是简化了我们一个个点的流程,注意不能去爬取付费资源。
) l9 E6 S2 k2 X) b. l- Q# `
g" d. ]1 l; i( u" J- n1 T9 O; S+ G% U! i$ ?; l$ Z/ ?
: E, P+ O) X1 N/ x$ {% u. g我们要做的就是通过爬虫把这些表情包下载到我们电脑里。% c t/ ^4 v+ k# T4 ^
. \0 z+ s* L0 r5 }编写爬虫程序. Z3 }. _( W3 {( K
首先肯定要通过python访问这个网站,代码如下:
" d. L, P% t- D! C# h5 A7 r. _$ G6 L, r8 {/ J1 W P/ ]) t
headers = {- u( q$ y) A& i: C2 u2 Z& N
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
9 L3 H6 q) h2 G+ m1 H* [. ~4 J }
4 }, y, C _+ p: V7 @3 o& xresponse = requests.get('https://qq.yh31.com/zjbq/',headers=headers) //请求网页
" n# b/ G0 z' ? f# F" ^+ ^其中之所以要加headers这一段是因为有些网页会识别到你是通过python请求的然后把你拒绝,所以我们要换个正常的请求头。可以随便找一个或者f12从网络信息里复制一个。
/ n& Y, }$ K! d5 s- Z% P t. V; f, c* {; k
8 N1 w+ }) H8 k+ K4 E `4 ?
$ A2 e2 {7 M3 I% Y( v7 u" u
然后我们要找到我们要爬取的图片在网页代码里的位置,f12查看源代码,找到表情包如下:1 M( X$ v. ]2 J
+ C* O0 d5 W: [% O$ Q/ `
2 |# r" y% ]2 m
2 k4 h1 {8 I: P( l0 u! q7 G
然后建立匹配规则,用正则表达式把中间那串替换掉,最简单的就是.*?$ p! z+ L( Y8 g* r0 U- s
: E9 T: s' r1 o( g. P2 g" S: z# X
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'
[6 L7 L1 x' c) p, d 像这样。! @0 k$ A" B8 ^+ P2 Q
4 _9 k% a3 @+ N7 K4 B+ H然后就可以调用re库里的findall方法把相关内容爬下来了:3 X# J9 @2 u |. M* m1 h
. N8 l7 A. _$ l$ ~# Vresult = re.findall(t, response.text). ~# { w4 q3 B# ?$ }+ k9 R
返回的内容是由字符串组成的列表,最后我们经由爬到的地址通过python语句把图片下下来保存到文件夹里就行了。
! ^6 H/ _9 S1 T% Z9 N4 _
+ V& I/ `, m# }" o程序代码& u, C! P2 Q% I5 ]1 |3 ^% B6 T2 Z
import requests0 I1 x2 x, p( y- ^3 R# m/ {# n& W; M
import re
* J& r- O' ~; E) Eimport os
2 T5 J: r- W6 N4 g% ?9 d+ }8 ^
V1 n! e/ U5 n( { Q4 \+ uimage = '表情包' |' p# G; [$ R
if not os.path.exists(image):
$ v; h: r0 x c6 G+ q# B os.mkdir(image)$ y5 C" G( H8 x, ~$ U6 ?
headers = {2 N# V! S* ?# b x: C4 V+ s
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'7 a, s2 ~# w5 _
}
! P9 G, o; F" d7 D+ Vresponse = requests.get('https://qq.yh31.com/zjbq/',headers=headers)
3 A' e# h! o! _% U0 \- Qresponse.encoding = 'GBK' d) y9 ~- k+ [# L# C9 n# l- J
response.encoding = 'utf-8' j, A# ]) `( ` Y c
print(response.request.headers)
2 q+ d8 ?) S. c1 ?print(response.status_code)+ Z |2 K' f; R* u, o' ]
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'
6 A! d; j/ o6 G* {$ i% H$ {4 S& iresult = re.findall(t, response.text)& l' [7 s+ |4 M" M
for img in result:
% z7 ~; D, q$ J% u. q7 ? print(img)
3 y& R" d" H3 o O& @8 o: _- K% e res = requests.get(img[0])
}4 [3 A: l3 S( Y- R print(res.status_code)0 ?# D/ p5 a1 v
s = img[0].split('.')[-1] #截取图片后缀,得到表情包格式,如jpg ,gif
9 D3 R4 H8 o2 q with open(image + '/' + img[1] + '.' + s, mode='wb') as file:% A/ r4 D# W' V' e' ~# D6 N0 R
file.write(res.content)
& j! g2 Q2 q1 D9 u最后结果就是这个样子:
& i( B( a( f: j, O9 P
\4 S0 [" G8 J- X/ i a$ b: n& ^
———————————————— J' S% @8 E0 J1 Z4 g4 a; L5 O
版权声明:本文为CSDN博主「plexming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。! i: j5 f' ?" S0 \/ R- l) I7 l
原文链接:https://blog.csdn.net/qq_46145027/article/details/1239690442 |0 }1 T8 c% D3 f! w8 u6 [0 q5 ]4 S! P
; u5 C \# v1 H* i8 y+ y) t6 v9 b
7 _% a6 y ^0 S |
zan
|