马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Pythonnewers 于 2020-3-29 14:43 编辑
注意,本文因为只有13行,极简极简,因此没有什么多线程之类的高端设施,但是爬取一些也够。
----------------------------------------------------------------------------
鉴于本人等级不够无法发图,所以想直接看成果的跳到最后~
第一步import requests
import re
import urllib.request
可能有些看这么多import比较头疼,实际上,re才是主体,用于搜索(不明白后面说~),request就是获得网页。这样的话网址就在这里面,不了解的去个网页,右键,找到检查,点击。就是那个
urllib.request就是获得到网址后下载下来,一句话(毕竟总共才13行.)html=requests.get('http://pic.netbian.com/')
先获取这个网页,因为这里面有图片地址~要不然在检查那里的窗口点左上角的小鼠标,然后点击图片,你就会发现<img src=网址,这个网址就是图片地址~html=html.content.decode('gbk')
这个的意思就是将网页源代码解码(就是变成能让人看懂的意思!)有些网站'gbk'不行,改成'utf-8'F=re.findall('<img.*?src="(.*?)"',html,re.S)
注意注意主体来了,按照第一步你会发现<img src='网址'这个东西,实在不了解百度怎么查看网页元素也行~.*?表示贪婪模式(这个东西我想了好久才想明白,就是跟<img相关的全部找到(官话叫'匹配'))然后(.*?)表示非贪婪模式,(.*?)就是只找到src="网址"这个网址src不找。然后.*?,什么意思?就是正则表达式,如果你跟我一样百度也理解不了的话。就记住,以后就使用它(没错,几乎万能!)
比如啊
注:这里是例子,不要写入!抱歉这个东西不咋会写(懒得复制),就是让你明白一下,"src="后面地址,就是图片地址,非贪婪就是只找到www.baidu.com,如果你不加括号,会直接把<img src="www.baidu.com"找到.实在不理解动手试试,动手确实很有用这个后面有,就是设置个变量,看后面代码就能明白~for i in F:
i=('http://pic.netbian.com'+i)
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)这样的良好习惯是因为有一些代码不适合我这么写,会报错就是x+1=x,实在不明白就写 x=x+1
最后再来个表示你下载成功了。
最后附上总体代码import requests
import re
import urllib.request
import time
x=1
html=requests.get('http://pic.netbian.com/')
html=html.content.decode('gbk')
F=re.findall('<img.*?src="(.*?)"',html,re.S)
for i in F:
i=('http://pic.netbian.com'+i)
urllib.request.urlretrieve(i,str(x)+'.jpg')
x+=1
print(i)
运行你会发现会报错,这个我也不知道怎么办,但是可以成功的爬取25张
如果觉的不错请给个评论~不强求。打字不易..
审核大大快点通过哦~ |