- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565616 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174908
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
python爬虫入门教程:爬取网页图片
$ r! s8 }) U; [ C* S, M( c2 p5 B8 Y& L: [1 Y# ^. P
在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程:
) Y+ |! n1 {0 M9 [5 t! U/ f) b! O7 s( a' Y/ q
准备工作! ^- U+ n) i8 @% O2 W% z! e' P
语言:python
" ^+ B0 o6 p9 b3 b" U8 }$ j1 n7 ~/ ]* X( J
IDE:pycharm6 w; u0 J0 k( J5 |
' m b2 N1 d- C4 [1 {5 _首先是要用到的库,因为是刚入门最简单的程序,我们主要就用到下面这两:
. O3 D+ T3 x+ k5 D/ q2 I3 {8 M4 \
import requests //用于请求网页3 a. t' ~3 D/ y3 Y5 G1 S0 C# k
import re //正则表达式,用于解析筛选网页中的信息- J, _6 g& f) I5 x2 S1 V4 m, q
其中re是python自带的,requests库需要我们自己安装,在命令行中输入pip install requests即可。
, F- a' W, M2 a4 z2 j1 T/ _6 D$ D9 b1 O* u' ]
然后随便找一个网站,注意不要尝试爬取隐私敏感信息,这里找了个表情包网站:
- k- M8 o( S9 t/ Y+ Y2 x
; |( @. ]7 ~/ q: j' p5 m; e& A注:此处表情包网站中的内容本来就可以免费下载,所以爬虫只是简化了我们一个个点的流程,注意不能去爬取付费资源。
- q7 u; a: f: I0 u7 V7 [( [3 m
: i [: H1 Z3 o) `0 h x5 }7 a9 u1 D! m$ U9 `& ~3 _
( B# }, ?4 [- e
我们要做的就是通过爬虫把这些表情包下载到我们电脑里。
D. A8 \6 B& Y5 q
i0 d( S8 H& s) e" t$ R7 y编写爬虫程序 x+ ]* z/ J6 z/ z0 s% e% F1 R
首先肯定要通过python访问这个网站,代码如下:
j1 j, [! e* q* I0 X) d; G( X- v
headers = {
; q. d, F3 v- L, k; Y [ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
* R" P& ]8 _' d: @ }9 w' X$ Q% b+ ?! B& f8 W
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers) //请求网页4 Q B6 }1 x; c# m2 W9 W8 v
其中之所以要加headers这一段是因为有些网页会识别到你是通过python请求的然后把你拒绝,所以我们要换个正常的请求头。可以随便找一个或者f12从网络信息里复制一个。1 p; U* \0 M* ]' V7 u
% ~3 [$ P# h6 T5 y4 z) R; {; t
, t1 v% I* S6 m" Z! n: Q& {: y: A# y% ^3 u+ e
然后我们要找到我们要爬取的图片在网页代码里的位置,f12查看源代码,找到表情包如下:% [, f- u. U+ O
# `; B9 u9 U5 w2 n B
7 _- z' Q, W# _- n# ~8 S
x! b& L. U. {* r! F% W5 z8 Y
然后建立匹配规则,用正则表达式把中间那串替换掉,最简单的就是.*?* {. H" A& E- d0 Q& b$ x. W
" w% _) y5 M% w( }4 b2 b; x9 Dt = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'# @+ I: M7 j/ O" [' O D% I& |/ ?
像这样。
5 ^! p. _# F6 O, ^7 s$ _
2 R8 `$ O, a% F! P9 Z* K5 r2 |' G9 G& W然后就可以调用re库里的findall方法把相关内容爬下来了:* V' V9 @2 [' Q0 B) T* E" @
. {; L6 N; q0 D Jresult = re.findall(t, response.text)
0 s. b9 C8 c+ z: o2 e8 y- X返回的内容是由字符串组成的列表,最后我们经由爬到的地址通过python语句把图片下下来保存到文件夹里就行了。
/ G% T( p/ o) n. v8 o7 v) m0 m) C% X' @: R, ^
程序代码8 |$ ~* Z# H% C5 u
import requests9 c* V/ j* }2 o9 A7 |/ A- u& O
import re1 C. f/ l9 x" v. o: i
import os/ o2 E. U7 ?7 W
6 L. y% c! s7 G% ]7 F
image = '表情包'! r' \$ J2 v h; h4 f! b
if not os.path.exists(image):: i2 Z8 S' `9 y8 \
os.mkdir(image)3 s" T. [" n' l
headers = {
9 y/ r3 q* k g2 n9 ^ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
$ s8 C/ W/ ~! z* O X }
: W6 M! |9 X7 P `# L9 {+ Nresponse = requests.get('https://qq.yh31.com/zjbq/',headers=headers)
F6 h* s% g+ t; K, i. ]( Q% K7 |response.encoding = 'GBK'
_6 C5 o( n; S! M; w6 k, lresponse.encoding = 'utf-8'
4 `) g( }2 k) p5 u( P9 Qprint(response.request.headers)2 n1 R" `# }. z7 S
print(response.status_code)! x1 A9 E- i( m/ c
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'
+ O2 n2 x1 w W& d3 C S9 Dresult = re.findall(t, response.text)
/ P+ \: G: W" r2 N8 Yfor img in result:; U. q- W- G9 R& h) {. J6 ^0 J! c
print(img)
6 p# ^( U: C8 T7 ~+ P res = requests.get(img[0])- j" x( ?, M# ~7 ?2 {
print(res.status_code)( h) |7 U& Z; U! R4 b) ~, z3 _ G
s = img[0].split('.')[-1] #截取图片后缀,得到表情包格式,如jpg ,gif
S2 t: n* B3 |# K P with open(image + '/' + img[1] + '.' + s, mode='wb') as file:
8 C0 H6 x5 i4 {$ a7 f' ?+ A' E file.write(res.content)
5 K) X% c/ N/ y* v, }% U最后结果就是这个样子:
3 h/ K/ C. N, O, ?- H* @# [- M8 A m4 h& c
& `* l r/ o2 t( C r/ c2 N& |5 T————————————————2 S; u5 C Q6 [' v
版权声明:本文为CSDN博主「plexming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
6 H+ \$ [+ ~6 Z3 L8 {: C原文链接:https://blog.csdn.net/qq_46145027/article/details/1239690445 I! B# |8 z# F, T6 `$ l
3 j" Y2 V/ H- V1 l. n8 c+ L
3 P# A$ r, L9 p+ [; `; `
|
zan
|