鱼C论坛

 找回密码
 立即注册
查看: 1206|回复: 0

[作品展示] [Python][动漫妹子][小白向]13行代码教你写一个极简爬取壁纸[动漫],不点进来康康?

[复制链接]
发表于 2020-3-29 14:38:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Pythonnewers 于 2020-3-29 14:43 编辑

注意,本文因为只有13行,极简极简,因此没有什么多线程之类的高端设施,但是爬取一些也够。

----------------------------------------------------------------------------
鉴于本人等级不够无法发图,所以想直接看成果的跳到最后~
第一步
  1. import requests
  2. import re
  3. import urllib.request
复制代码

可能有些看这么多import比较头疼,实际上,re才是主体,用于搜索(不明白后面说~),request就是获得网页。这样的话网址就在这里面,不了解的去个网页,右键,找到检查,点击。就是那个
urllib.request就是获得到网址后下载下来,一句话(毕竟总共才13行.)
  1. html=requests.get('http://pic.netbian.com/')
复制代码

先获取这个网页,因为这里面有图片地址~要不然在检查那里的窗口点左上角的小鼠标,然后点击图片,你就会发现<img src=网址,这个网址就是图片地址~
  1. html=html.content.decode('gbk')
复制代码

这个的意思就是将网页源代码解码(就是变成能让人看懂的意思!)有些网站'gbk'不行,改成'utf-8'
  1. F=re.findall('<img.*?src="(.*?)"',html,re.S)
复制代码

注意注意主体来了,按照第一步你会发现<img src='网址'这个东西,实在不了解百度怎么查看网页元素也行~.*?表示贪婪模式(这个东西我想了好久才想明白,就是跟<img相关的全部找到(官话叫'匹配'))然后(.*?)表示非贪婪模式,(.*?)就是只找到src="网址"这个网址src不找。然后.*?,什么意思?就是正则表达式,如果你跟我一样百度也理解不了的话。就记住,以后就使用它(没错,几乎万能!)
比如啊
注:这里是例子,不要写入!
  1. <img src='www.baidu.com'
复制代码

抱歉这个东西不咋会写(懒得复制),就是让你明白一下,"src="后面地址,就是图片地址,非贪婪就是只找到www.baidu.com,如果你不加括号,会直接把<img src="www.baidu.com"找到.实在不理解动手试试,动手确实很有用
  1. x=1
复制代码

这个后面有,就是设置个变量,看后面代码就能明白~
  1. for i in F:
  2.     i=('http://pic.netbian.com'+i)
  3.     urllib.request.urlretrieve(i,str(x)+'.jpg')
复制代码

for 循环,因为F这个你要是print出来发现是一堆网址的列表,例如["www.baidu.com","www.news.baidu.com"] ,for 就是单个拿出来,迭代器.
然后i=的那句话是因为你会发现你弄出来的F不完整,不是可以打开的。至于加什么,你就随便点一个图片,看看它的网址和你列表里的网址对比,看缺啥补啥
最后一条urllib就是将你弄好的(例)www.baidu.com下载到本地,相同文件夹,但是可以加路径,我没加,上网搜这行代码的详解一大堆,我只针对这个
然后这个下出来的不止一个,你要是同一个名字就炸了,你需要设置个变量x,PS:我不推荐这么写,我推荐'{}.jpg'.format(x)这样的良好习惯是因为有一些代码不适合我这么写,会报错
  1. x+=1
复制代码

就是x+1=x,实在不明白就写 x=x+1
最后再来个
  1. print(i)
复制代码

表示你下载成功了。
最后附上总体代码
  1. import requests
  2. import re
  3. import urllib.request
  4. import time
  5. x=1
  6. html=requests.get('http://pic.netbian.com/')
  7. html=html.content.decode('gbk')
  8. F=re.findall('<img.*?src="(.*?)"',html,re.S)
  9. for i in F:
  10.     i=('http://pic.netbian.com'+i)
  11.     urllib.request.urlretrieve(i,str(x)+'.jpg')
  12.     x+=1
  13.     print(i)

复制代码

运行你会发现会报错,这个我也不知道怎么办,但是可以成功的爬取25张
如果觉的不错请给个评论~不强求。打字不易..
审核大大快点通过哦~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-9 15:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表