- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563276 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174206
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
python爬虫入门教程:爬取网页图片. i. `% Z+ k3 c1 i4 i& q4 d
% k {/ B* N) b" h
在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程:
; |9 q" L( v D+ s: g8 K2 b; U
C' N2 `, l8 g准备工作( }) D+ s& G4 i3 L
语言:python1 g7 ` v ?& D- ^" u5 g
. Z# L. V) _/ {) f z
IDE:pycharm) B! Q: o6 u$ b8 \5 E% P
1 D& E$ U8 O( m* z
首先是要用到的库,因为是刚入门最简单的程序,我们主要就用到下面这两:
7 i7 R( h- j0 S' _( c m7 j. G8 T7 z
import requests //用于请求网页
" x; Y6 L5 \& K) N$ R/ rimport re //正则表达式,用于解析筛选网页中的信息
, R8 F! i% W* j# y( v" P' A其中re是python自带的,requests库需要我们自己安装,在命令行中输入pip install requests即可。- b( a" t/ s. P9 ~
- ~; W3 {4 C+ k) b& X/ R0 R: Y
然后随便找一个网站,注意不要尝试爬取隐私敏感信息,这里找了个表情包网站:+ e7 t: e5 n, B( C
8 J2 O/ d, g2 c# L7 e4 H: ` P注:此处表情包网站中的内容本来就可以免费下载,所以爬虫只是简化了我们一个个点的流程,注意不能去爬取付费资源。! _' L2 A* d5 i( T2 M
0 j; F+ \& J/ c4 j4 y- a# I
5 ]( T' a5 x2 d- G
$ q1 n3 ^4 c1 V% m4 z8 G9 {, K9 z我们要做的就是通过爬虫把这些表情包下载到我们电脑里。
3 U" C2 j; U2 m& e% E# e* r1 P* R7 X/ u0 {7 c+ w
编写爬虫程序
+ X2 W! v8 W& n3 ^首先肯定要通过python访问这个网站,代码如下:
" I: A0 n2 w2 e: s) W
+ x, y: r/ L0 _1 m- Uheaders = {
) `1 s9 g* G& E/ [ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'2 f6 \* T- e4 S: K S! i
}
: k, O8 n8 [5 X, @8 k0 ]2 rresponse = requests.get('https://qq.yh31.com/zjbq/',headers=headers) //请求网页* z4 S9 ?. R. u4 s! w! x' K. g
其中之所以要加headers这一段是因为有些网页会识别到你是通过python请求的然后把你拒绝,所以我们要换个正常的请求头。可以随便找一个或者f12从网络信息里复制一个。) a: _7 B- \! d6 k. @; F
$ u/ }% W3 N ^9 Z m% j, j3 B
+ f+ ~# t4 g+ d* \! O7 Z, \
5 c1 M: U% u5 w! @- J2 C; m然后我们要找到我们要爬取的图片在网页代码里的位置,f12查看源代码,找到表情包如下:
) u; D J$ `9 f( U( w2 {; r- E) @/ [2 a: E7 C
& j0 i D" G* \) D. K- B9 } c* |
( ~( W5 j7 ^* w! L
然后建立匹配规则,用正则表达式把中间那串替换掉,最简单的就是.*?
! w0 b5 t0 }" \ z
9 ]6 L F/ i1 O5 h* p Yt = '<img src="(.*?)" alt="(.*?)" width="160" height="120">', u3 Z h, e* L! F9 g" z; N# t$ `
像这样。% }9 K, t Q. X6 P% P
' a- p+ b% V, p0 r$ B) p
然后就可以调用re库里的findall方法把相关内容爬下来了:% z' W6 c" O* @% C% _5 e9 K
$ o6 s8 R f& f& J, c/ kresult = re.findall(t, response.text) }" K8 X5 e: `
返回的内容是由字符串组成的列表,最后我们经由爬到的地址通过python语句把图片下下来保存到文件夹里就行了。7 S( Q5 T" J/ v, [3 w4 J
+ |) {' ~6 a( d6 F* z
程序代码
! b$ |# Y* W3 x; Aimport requests
* z) [1 Q- h4 ^0 H1 Iimport re
0 O5 y9 K/ r9 I) U: V6 Wimport os0 ^% Y+ {% L1 v
+ t0 {3 V$ H/ d5 I3 d' Y2 y2 o4 eimage = '表情包'0 a4 t7 [% q& s; G- ?" G7 S+ c
if not os.path.exists(image):
2 w% c! e4 B) g! ~9 D os.mkdir(image)
# H1 A* \ f I5 rheaders = {
% |9 Y q% \7 H: a 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
9 V4 m2 p ~3 k5 ^) B }0 L8 i$ q7 d- r) u
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers)
\: u9 u9 D+ T5 M' B0 U# L Q. uresponse.encoding = 'GBK': g2 k$ _' u* E, l
response.encoding = 'utf-8'
. _9 T/ C1 Y, i/ |; n- B: Aprint(response.request.headers)
$ v0 w1 p- B) _: g& _. j, C- P' M" Xprint(response.status_code)
; H# l! q# X2 g; U( j5 ht = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'; g2 H8 x/ ^0 O8 I3 R8 c9 p% W' R7 r
result = re.findall(t, response.text)
% s* B! G' A! N/ N/ A# w/ }. Yfor img in result:
8 G& v" e1 ^7 p' \6 e; t% k; K print(img)/ p) ]/ p! P l0 z
res = requests.get(img[0])
) a; j) x# _1 z2 K print(res.status_code)" |3 r: W) F5 d6 p+ W% p. v; M
s = img[0].split('.')[-1] #截取图片后缀,得到表情包格式,如jpg ,gif8 A; u9 i6 H6 J
with open(image + '/' + img[1] + '.' + s, mode='wb') as file:
" m& _, \# \+ Z, e# v file.write(res.content), F! K$ V& G- h
最后结果就是这个样子:/ n7 H' K( z$ {* C- \+ j! e
" h4 S |3 J& O/ ~2 [ |' @' w
( H8 W W7 R$ j- I
————————————————9 Q$ ~: |$ V" K& Z+ [
版权声明:本文为CSDN博主「plexming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 X" V( x0 u8 @
原文链接:https://blog.csdn.net/qq_46145027/article/details/123969044
2 i6 v' L& E4 O* ]9 W# f( _5 h) N& ?0 I6 ^0 ^% P! L8 {
6 P- w9 g2 m/ j- v/ Y$ v
|
zan
|