- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 568668 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175823
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
python爬虫入门教程:爬取网页图片
, ^; g2 ]2 ~% U: q$ G) q [+ \3 d1 E3 j9 J/ a, ~
在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程:
7 d! F8 M6 K( ?& r% K2 x2 z1 e# q! K2 q4 U4 G0 t
准备工作
8 a1 r$ g0 [5 @4 T; e& J( ^语言:python
+ r" ?& U/ i5 t1 g, M8 z% V; v0 h: M* a8 r$ n. ~" |
IDE:pycharm
. n1 Y0 s. R6 h# f
+ T; M. A. [3 i/ M* ^% c0 _9 v& q首先是要用到的库,因为是刚入门最简单的程序,我们主要就用到下面这两:
: r" ?) i' Y: m9 I- R l( T' M2 w5 |$ ^: A$ y8 l7 i+ C1 ~# C
import requests //用于请求网页
8 f8 u# `! Z9 M+ d- ]import re //正则表达式,用于解析筛选网页中的信息% F" I4 p2 W5 G: _! w. \
其中re是python自带的,requests库需要我们自己安装,在命令行中输入pip install requests即可。
" B) W) g* G4 P& e- B& j
; C8 e7 Y) g5 h7 W# {! m然后随便找一个网站,注意不要尝试爬取隐私敏感信息,这里找了个表情包网站:7 B* p' Q) \8 c8 d1 x( C. I% v
' C: ~9 g) @% B+ D" w2 X
注:此处表情包网站中的内容本来就可以免费下载,所以爬虫只是简化了我们一个个点的流程,注意不能去爬取付费资源。
# v I( S$ `% O N1 W3 T4 ~$ E9 {% W. g( _2 Z
! |- d& x0 m2 J4 |6 Y7 \& j, ?2 v9 X3 M; w" T8 w2 k' ]* t
我们要做的就是通过爬虫把这些表情包下载到我们电脑里。
' p* O5 G' X" V
7 p! Q0 T8 P6 X9 I* ~$ V编写爬虫程序
) e( K6 r: Z, B首先肯定要通过python访问这个网站,代码如下:4 C4 }! u% k) B( B8 {, y+ ~* |
! Z: f# a5 Y. c" i7 ^1 }! n
headers = {# B& c% L' v4 ^$ c. N& i
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'7 u% ]0 T( c2 `+ a
}* ^2 ^# U, b& m
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers) //请求网页
4 s) C, `# l0 g5 q8 S. j5 P, p其中之所以要加headers这一段是因为有些网页会识别到你是通过python请求的然后把你拒绝,所以我们要换个正常的请求头。可以随便找一个或者f12从网络信息里复制一个。
' E9 u9 g6 F% W0 L. {: C, d' t* [" m- g" t
# d9 T. D0 g" V: G6 x1 X5 A/ _
) b7 m r! O1 l; ]9 X然后我们要找到我们要爬取的图片在网页代码里的位置,f12查看源代码,找到表情包如下:
! A3 a* i: \% X
( n! E- X4 \0 _; |6 H3 X: F- T% Y- A2 [; J* K# x# h9 F: o9 ]
" I% w$ ~) W* n) o
然后建立匹配规则,用正则表达式把中间那串替换掉,最简单的就是.*?& l0 b# [. K: l. ?9 M
$ O u! E" K. |% [/ c+ D5 yt = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'* i; h0 `+ Y& O r8 ]4 O% y
像这样。
7 u( @5 H% r r2 O5 i% Z; H W9 p% \; b" C( Z4 o1 g' j4 c
然后就可以调用re库里的findall方法把相关内容爬下来了:
* U+ a: e: G# r& ?9 y0 X
5 r0 `3 W1 ?0 o0 Rresult = re.findall(t, response.text)
: D3 a. y2 Q( m- G% g. i- I3 V* d' A返回的内容是由字符串组成的列表,最后我们经由爬到的地址通过python语句把图片下下来保存到文件夹里就行了。4 [6 m5 }% f: f0 c) i5 y$ g$ N; f5 {
0 I( J7 u6 E& W' a- R1 M$ R% Z程序代码& I0 [& R# h& [: n& O, o
import requests
2 n, K4 z6 {. ]% V2 W; |; K: Jimport re% @: h! v% z! B- e O4 p9 ]
import os. m1 l2 n; h* T1 T! ]
3 X9 z' q8 f% k& m
image = '表情包'
7 r! ?; v% e% W. t0 b( ^if not os.path.exists(image):
7 q' u) \4 t0 P$ A& h os.mkdir(image)
) S6 E! |, k! h3 D7 qheaders = {
6 O. T0 G* H2 A1 t+ j! b' V2 j 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
n. }8 e" R8 l }
- @6 n) v( s9 Y0 y8 L2 Uresponse = requests.get('https://qq.yh31.com/zjbq/',headers=headers)$ k; [2 |6 b& t
response.encoding = 'GBK'7 P( b0 \- j$ L0 R/ V8 [' Q# J4 G
response.encoding = 'utf-8'2 i( @( _: d4 w! f
print(response.request.headers)
* w1 E; c; m" P/ p5 Oprint(response.status_code). |: S/ w& f7 a* U; d9 y
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'/ }, N$ v: ~, F' j
result = re.findall(t, response.text)
0 g1 C" _0 Q1 ?! F* X* kfor img in result:- p' A3 p+ p/ P/ {7 S# K9 x$ A
print(img)
/ o: W) n$ Z; Q2 M8 ? res = requests.get(img[0])
( y* K) d s H, r, Z print(res.status_code)
1 v7 ?' N V6 J2 H @* q- `8 T- q/ \ s = img[0].split('.')[-1] #截取图片后缀,得到表情包格式,如jpg ,gif9 W( N1 t% m( S
with open(image + '/' + img[1] + '.' + s, mode='wb') as file:( g3 `* s0 \- s+ v/ q: ^6 J
file.write(res.content): q; b$ q) t/ j2 x; K
最后结果就是这个样子:
) N) `6 g5 _8 B2 w
v4 g2 ]. [. S) [! A0 ]3 s
! C9 l; p: Y6 _" |+ M6 F- F& ?————————————————! S, d8 |) j/ |/ y% ^
版权声明:本文为CSDN博主「plexming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。& ^4 D: X2 s" H& A R: N/ w
原文链接:https://blog.csdn.net/qq_46145027/article/details/123969044+ O) z. k( R J: }+ j( P
- `0 c: y2 }+ Z0 X. B* ]3 I' ? d. ]6 d$ y; R( E5 p
|
zan
|