- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565645 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174916
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
python爬虫入门教程:爬取网页图片
, e3 [% j- P3 o8 k3 u: E
( H, O, p1 h* A& q: E* W在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程:' K- a K! m4 ^6 j
1 Y) t. c$ @5 q# ?
准备工作2 `( H( [/ ?% I6 t$ _% o
语言:python
2 [. k2 {5 g @6 {0 y. p5 A4 F; d3 L: ~& m* k
IDE:pycharm
+ {7 u7 r+ R& l" B3 H% p, D
5 v4 J# ^* l, L( D! q$ ^1 _8 Y2 K2 L/ u首先是要用到的库,因为是刚入门最简单的程序,我们主要就用到下面这两:
8 D! n! z5 Y2 X, J' k$ F
U1 o. d; j. Z& j' T! V, d2 Iimport requests //用于请求网页
5 h; g- p! O; k" `# Zimport re //正则表达式,用于解析筛选网页中的信息: p* U- P7 }* H1 y5 B
其中re是python自带的,requests库需要我们自己安装,在命令行中输入pip install requests即可。' W" I, k6 b [: V9 [+ M0 c0 A
# H4 d8 f1 x2 s& H# a
然后随便找一个网站,注意不要尝试爬取隐私敏感信息,这里找了个表情包网站:5 z, e! o+ L$ j: X I
/ N; O; x& }8 ^
注:此处表情包网站中的内容本来就可以免费下载,所以爬虫只是简化了我们一个个点的流程,注意不能去爬取付费资源。% z# k2 D3 r* y% N$ j3 @9 _9 d1 B2 F. Z: b
& ~: V* E1 e! \" }2 f. D
& I8 M1 p& b# ?% |- q# }! t& ~' {+ P/ F. z2 T% U
我们要做的就是通过爬虫把这些表情包下载到我们电脑里。2 P3 D' c/ p1 W# M3 O& @
, K1 g1 [6 V o& M
编写爬虫程序
% v! q# a3 v. k7 U8 p- ~8 x首先肯定要通过python访问这个网站,代码如下:
( ]3 P3 ^! ?7 [& a% G* O% q
6 S0 J" r* z" T) _; Cheaders = {
3 f& [; j( w8 d1 u! T 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
1 w2 u: F, @ z5 I }7 Y+ l$ F" p! L, p% G* e
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers) //请求网页" k. g2 t7 z( y. n
其中之所以要加headers这一段是因为有些网页会识别到你是通过python请求的然后把你拒绝,所以我们要换个正常的请求头。可以随便找一个或者f12从网络信息里复制一个。# D v7 C# T& ]1 v* u
) @0 |- R3 f4 Z+ a( I. F" c% r' I9 v) u) [" f7 ^/ I8 ~
/ {1 P" U# o- M% i, u7 T9 R然后我们要找到我们要爬取的图片在网页代码里的位置,f12查看源代码,找到表情包如下:
: E" P: n7 o5 i' H/ b# i* `
( o+ S) s6 R w% F; N* G& z
. {7 ]% H3 M+ C! ], m& w" f( C; D4 I% P% ~$ t
然后建立匹配规则,用正则表达式把中间那串替换掉,最简单的就是.*?
, e9 Q# O9 R. r9 L( `, l& p! E, [! I" N! l1 t2 M$ U' ^! \4 ` `
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'( n3 v- v/ u7 c
像这样。
2 m6 m' a! K4 e, c) a
. r* M6 R7 u4 l" {) V& M1 F) y3 M! _" U然后就可以调用re库里的findall方法把相关内容爬下来了:
! C! M4 D: r3 z( q% r/ i, ~: }) G5 Q
& Q2 R Z/ J ?/ M8 I3 H+ H( Presult = re.findall(t, response.text), u4 t. J5 D/ e. ]1 _, w
返回的内容是由字符串组成的列表,最后我们经由爬到的地址通过python语句把图片下下来保存到文件夹里就行了。
9 q( ?0 X& [; o- z0 g
$ O3 ]4 n" V. m# V; W程序代码! @4 H9 g" g8 r/ @, E+ @1 [0 s
import requests' v' [! T, y1 ^ @
import re+ D. f @* d) t$ M7 O6 P4 ]: U. O
import os* D+ O$ x; ^6 b) W- [
3 y- y! {( [4 Ximage = '表情包'
% `. G0 E( O6 a; D3 Z) s$ S0 sif not os.path.exists(image):- g% m5 ]$ k& ~' G& u
os.mkdir(image)+ v) M+ [- [+ B+ r2 F
headers = {
3 Z7 [3 z* M+ a6 @ n7 W 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'
3 ?( Y) Q) A* `1 r }* d8 T: `- s5 g7 D' ^! K$ T' j
response = requests.get('https://qq.yh31.com/zjbq/',headers=headers)
- Y* @0 L4 T3 r0 T1 I |& hresponse.encoding = 'GBK'; ?5 F: n+ l6 L, Z1 b9 G7 J
response.encoding = 'utf-8'7 p3 I& r- X! a5 [1 V* F
print(response.request.headers)# z" v3 `# E+ l! O c
print(response.status_code)( Z5 i3 F, ^5 h
t = '<img src="(.*?)" alt="(.*?)" width="160" height="120">'
4 c* w2 _' `. \0 T, ~result = re.findall(t, response.text)
6 i0 T" V7 Q6 xfor img in result:
3 p' K, r0 L5 ^1 | print(img)7 P# v# O8 w, P2 I7 \
res = requests.get(img[0])
; |+ Y7 J* t1 f8 e print(res.status_code)
. V* r# ^# s5 O8 E% o5 o1 M1 Q/ x2 K, d s = img[0].split('.')[-1] #截取图片后缀,得到表情包格式,如jpg ,gif- s2 i1 l0 {; q8 t: u
with open(image + '/' + img[1] + '.' + s, mode='wb') as file:
# u' Z6 _8 a: f file.write(res.content)
4 h: y3 T; n. Y; L- v最后结果就是这个样子:
4 B* {: l6 G2 @! K4 F" S: Z* b4 R, a- V( V8 {
c2 [2 }, I& S1 t% h————————————————$ Z/ m7 _! {6 U- L5 A9 [3 j
版权声明:本文为CSDN博主「plexming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。6 n" Z- p# p* L$ M
原文链接:https://blog.csdn.net/qq_46145027/article/details/123969044
* F5 z3 Y; I* Q' T; D+ |6 C% G2 g/ H
8 p; | w: n/ I) f- A' E; E
4 p: q8 ~: {$ E+ y: c* G+ D |
zan
|