- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563261 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174201
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
python爬虫入门教程:爬取网页图片1 X, N: H4 _+ w& A; o
- o: | T( k: H$ f& [在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程:
4 c5 s- |( S1 K8 O$ H1 D) w% Y9 l# L! W; ]* U3 w
准备工作: r% L( C+ d1 m# E. P L. k& k5 @
语言:python
0 r# O+ E' D6 m/ @6 x! i. Y3 Z3 U# z7 X6 G4 M+ ?' k$ @7 p
IDE:pycharm
- v& b* ?/ T, u& m6 c. L- w5 ? \. _
首先是要用到的库,因为是刚入门最简单的程序,我们主要就用到下面这两:
* t6 p5 R; ]5 p# J
5 r& s' W( z0 J, F8 eimport requests //用于请求网页
/ K3 r% }2 I- }4 }0 S- \import re //正则表达式,用于解析筛选网页中的信息
# s, m- V0 [- g+ W. k其中re是python自带的,requests库需要我们自己安装,在命令行中输入pip install requests即可。
/ E2 A# p: ~' T/ R9 h3 e
|9 i' G( ?9 C' b4 D然后随便找一个网站,注意不要尝试爬取隐私敏感信息,这里找了个表情包网站:5 O0 K$ g7 c" m) C$ t& ]8 k
% d' C* S5 G- [! c8 e0 A/ k; P
注:此处表情包网站中的内容本来就可以免费下载,所以爬虫只是简化了我们一个个点的流程,注意不能去爬取付费资源。
* m# Z5 }6 v) p2 g6 B( y% i, W# h: Q/ _
% u$ ^. [ R5 f0 L! _9 O% V( P8 {4 r, f1 Y) [6 B
我们要做的就是通过爬虫把这些表情包下载到我们电脑里。1 f% d/ T) W, B" O( f
w$ K; y5 \5 Z: J, S o+ ?
编写爬虫程序
. D" X/ [. K) k4 Y7 V6 p首先肯定要通过python访问这个网站,代码如下:% D) n+ B, u2 C+ z0 y! z3 J* M- Z
- X# [4 C: D) U; A) D( oheaders = {+ h- p/ E' b3 _* @; c/ _
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'2 P* z0 n- E3 @" _' H/ }( E2 I
}* {7 s8 s0 `# R7 Q* O
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers) //请求网页
2 |) Y, r% Q2 C3 k- S# v7 e其中之所以要加headers这一段是因为有些网页会识别到你是通过python请求的然后把你拒绝,所以我们要换个正常的请求头。可以随便找一个或者f12从网络信息里复制一个。: u7 G6 J; q4 B! ^1 a1 z% J6 `
6 v, ?7 U: {+ W& ]* Q$ {8 V7 f4 a8 N( v4 H7 }
3 M5 `+ t$ p( _0 y然后我们要找到我们要爬取的图片在网页代码里的位置,f12查看源代码,找到表情包如下:) h& J2 Q' D+ \% ?
8 t) S9 J; o8 c: B# t
) C1 W9 d4 w3 X5 i1 A9 g' t# u6 B0 m2 Z/ v8 M. f
然后建立匹配规则,用正则表达式把中间那串替换掉,最简单的就是.*?
0 [& E8 N: _# f+ T) S N0 w) x t( \6 x) W p, R
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'$ E9 f6 B: q4 E" K: b) P
像这样。
: j- {* A- q+ D; \' Q7 J3 a) d4 ~* ?( I$ R8 d+ ?" k- ]- H0 k
然后就可以调用re库里的findall方法把相关内容爬下来了:
1 _7 V& m, n+ f1 \$ O5 H7 e3 ~3 Y' U( t a+ Z6 u6 i Q2 X- X( l
result = re.findall(t, response.text)
# {+ M8 Q5 p* H3 `- J% Z- v返回的内容是由字符串组成的列表,最后我们经由爬到的地址通过python语句把图片下下来保存到文件夹里就行了。
9 S$ H( L% |4 ]! j) o
+ _) h, B% E7 M, [. u+ H程序代码% h8 V% W6 k& A k
import requests H) H8 Z" _* U8 ?* ^# q1 E) B
import re
: d5 ]& @; A, I; w4 vimport os
8 i& _2 X1 r4 A4 h1 c! n
0 K& B7 k5 ]+ k! g/ f) Eimage = '表情包'
; ~$ k6 L- ^6 d) r% e2 ~if not os.path.exists(image):1 F2 Z/ f0 J2 H& F% ]! G
os.mkdir(image), [' I: W7 {# Q! }" j$ x
headers = {
) `' y; S0 y5 T6 A+ X; e1 _# y 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'6 B) f9 D$ I. f3 D& F% \& e' s. h
}
, y1 u6 ~+ }8 t, Zresponse = requests.get('https://qq.yh31.com/zjbq/',headers=headers): y% w" U i7 h) ^. V: H9 P
response.encoding = 'GBK'
7 E4 z% n. @ y) g5 ~! uresponse.encoding = 'utf-8'
( b' U; {) A: g4 t$ F: hprint(response.request.headers)
2 U4 h) D: {% q5 J! O: `print(response.status_code)
! g o9 a, {% t- bt = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'
L0 I! v* X/ Y! fresult = re.findall(t, response.text)1 \- X7 [) b4 U% P4 E0 l( u( |5 a
for img in result:8 g7 j* F7 I& @ b+ {- O
print(img)
9 R6 g% [1 ]$ {' S7 R6 |% s res = requests.get(img[0]) L! O+ ^) e+ K' l
print(res.status_code)
- t. r' `! T8 Z: o/ ]1 [" G0 I s = img[0].split('.')[-1] #截取图片后缀,得到表情包格式,如jpg ,gif# Z4 x9 c% W8 j# E( B ?3 A# i
with open(image + '/' + img[1] + '.' + s, mode='wb') as file:
/ q4 C& v1 n: s/ P file.write(res.content), j; |" o ?6 ]) |1 e. [& w! g
最后结果就是这个样子:
' z" k; p" l$ m+ `. I* \" f* v) B4 {) g& X1 e( s+ W
( n2 [: r/ U4 |————————————————
6 T4 O3 {; u! U0 Q( n; u版权声明:本文为CSDN博主「plexming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
" t/ e2 D7 `7 ]; u- I8 q' _原文链接:https://blog.csdn.net/qq_46145027/article/details/123969044
0 p8 |; \* r4 y4 u6 Y1 p0 c. s/ t" w
B b4 z- m# A. K" s4 }- }
; ?4 g2 X4 N: y/ ?2 F |
zan
|