- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565606 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174905
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
python爬虫入门教程:爬取网页图片& ^: B2 z* B" x+ B
3 q/ g1 d y3 r8 n& h
在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程:
9 p( d& ], e+ e% e
3 N" W+ l* D( \2 X6 ^) t7 j准备工作
) \- y) p9 Q/ |' d) ?. e语言:python
3 {7 q2 B7 K% c! n5 N- f
; g; x& w3 Q8 F1 ]$ E+ V- mIDE:pycharm$ ^) F# g3 r5 W3 S0 Y
1 \$ Q& q# y' f7 N- g* n6 r: Z `首先是要用到的库,因为是刚入门最简单的程序,我们主要就用到下面这两:2 R% W! D+ S9 V" \. y
r+ `; u8 i" e( y* w
import requests //用于请求网页- p0 Z% R& m; x/ r4 a/ o
import re //正则表达式,用于解析筛选网页中的信息7 F: C0 ?, v# p6 h0 K7 ]+ j* {3 X: q
其中re是python自带的,requests库需要我们自己安装,在命令行中输入pip install requests即可。
* W3 b) Z1 F% a1 S0 `& r
- l$ N% F8 ~, e7 d7 M( u! S然后随便找一个网站,注意不要尝试爬取隐私敏感信息,这里找了个表情包网站:5 y- L5 v* j) k4 M+ N A9 l( }8 d& d
% `# y9 l; g& L' B' J
注:此处表情包网站中的内容本来就可以免费下载,所以爬虫只是简化了我们一个个点的流程,注意不能去爬取付费资源。6 D! W( q" g$ x, e
0 r9 T: E: G8 Q& Z% T
: q8 Z+ g' H0 L4 e) f7 U4 {9 e& n4 N
我们要做的就是通过爬虫把这些表情包下载到我们电脑里。! W, q H9 y* X/ N
4 v4 t6 {* G) ~1 W+ Z! B编写爬虫程序
. ~' U+ H: s2 `- R7 r% ?( M首先肯定要通过python访问这个网站,代码如下:
/ ~1 l# Q4 B/ ]' j# \. _+ v0 X- Q! T9 |. t
headers = {/ h( c' ?9 e+ [: z8 t2 U- Q( Q( A
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
( D7 O3 h: ~' n3 I- l }7 J3 A6 q8 q( A' L! \: d
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers) //请求网页2 y/ |! k: I8 z/ _
其中之所以要加headers这一段是因为有些网页会识别到你是通过python请求的然后把你拒绝,所以我们要换个正常的请求头。可以随便找一个或者f12从网络信息里复制一个。: R2 |% J. Z. y: ?2 [) o0 P5 a
; l) Q2 P) t( M* s$ @" J
0 ]# {' V1 d: j' w% n* x7 K7 T4 V3 H# `) T
然后我们要找到我们要爬取的图片在网页代码里的位置,f12查看源代码,找到表情包如下:8 y% x& w( t0 L: j1 f6 f
: E- j* p2 J; y6 |" i, a+ y( D5 L" R2 `4 Z
9 [; l6 T* w: ~; X) B
然后建立匹配规则,用正则表达式把中间那串替换掉,最简单的就是.*?( _" Y4 `/ j6 y$ Y- m' t8 `
7 {$ [/ K, \, k( ~' X b4 U
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'3 z# d! E- _& R' ^
像这样。: x& I7 f# a( U0 W* H
9 Y8 t) ^: C6 B5 T6 s1 c+ T& g
然后就可以调用re库里的findall方法把相关内容爬下来了:
9 b. C/ y4 J: ?' ^
3 Z6 _" C7 }! u" J H7 S1 n3 A5 Q9 `result = re.findall(t, response.text)
4 N$ C" n# n6 C5 ]7 v返回的内容是由字符串组成的列表,最后我们经由爬到的地址通过python语句把图片下下来保存到文件夹里就行了。
6 H: ]' T/ h' a1 v( h! ?" t2 w+ L: k { H, T
程序代码* j$ N) _$ t, u+ ?* E7 o1 | @
import requests
/ p+ ]! ~+ D$ y( S5 Z1 \/ c0 f, C# Zimport re
6 z$ ]9 Q8 ~& Y! p2 timport os+ z( S# q& G3 S
( C3 n! x6 {2 _' D2 ximage = '表情包'1 W) ~& {2 N) o' ?- T
if not os.path.exists(image):
2 l$ P; K, i j; X6 Q: O4 y os.mkdir(image)
6 J( [( V) @+ Y2 dheaders = {. v4 f3 @) O: R) p) d
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
3 h3 N$ J8 A) H# ?# u7 _8 i& R3 B }
, W$ x; I" Y! `- z, @% q7 uresponse = requests.get('https://qq.yh31.com/zjbq/',headers=headers)$ \ G. I$ M, Z% x' b. O+ f1 b( C
response.encoding = 'GBK'. g* x; W/ m% D
response.encoding = 'utf-8'4 A T8 T- j5 e2 `
print(response.request.headers)
8 J, m4 I9 x. H# y3 }; I# fprint(response.status_code)5 k' d) L( d! H- d0 v# d+ b
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'0 C- m0 x) [& }# M# |
result = re.findall(t, response.text)) l9 p, `* t- b: W- l
for img in result:
8 I; G; R/ Q5 j6 x8 R4 u* L/ Q print(img)
1 P+ f4 G; }- M3 y: m& i res = requests.get(img[0])2 L" l% ?2 A/ E2 T
print(res.status_code)
/ H( k- Z* m% w# _1 V/ L. p( e s = img[0].split('.')[-1] #截取图片后缀,得到表情包格式,如jpg ,gif
& W/ V0 ]+ U' x with open(image + '/' + img[1] + '.' + s, mode='wb') as file:
' U6 R3 {: F; S file.write(res.content)
/ D, p, e- Z8 [* L$ k最后结果就是这个样子:
' [' M& G5 P& d/ g J+ l' a: z1 j' V3 [9 B8 }8 n
4 J# e# d( B( }5 G: Y
————————————————
) d$ B5 S( N: F$ {5 T) k2 n9 G版权声明:本文为CSDN博主「plexming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# S: J7 F2 b+ N L+ u2 _' C7 U原文链接:https://blog.csdn.net/qq_46145027/article/details/123969044
0 l" ~/ j. B2 w2 q2 k9 f/ o) a x; E9 x: n- d$ _! {
% ]- ^- J4 W3 N9 G8 a
|
zan
|