前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现简易爬图

Python实现简易爬图

作者头像
ZackSock
发布2020-01-22 13:24:37
4650
发布2020-01-22 13:24:37
举报
文章被收录于专栏:ZackSock

第一步,先获取网页源码。这是用以下网址为例:

代码语言:javascript
复制
url = "https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=%D4%FA%BF%CB%CB%B9%CD%BC%C6%AC&fr=ala&ala=1&alatpl=adress&pos=0&hs=2&xthttps=111111"

Python网络请求的类在urllib中,我们这次只需要用request。发出请求,获取响应:

代码语言:javascript
复制
#从urllib中导入requestfrom from urllib import requestimport urllib
#发出请求response = request.urlopen(url)
#读取响应里面的东西,这时候text就是网页源码了text = response.read()

第二步,写出正则表达式。这个就不赘述了。网上很多讲解。这里说一下,Python中正则的操作在re库中。从源码中获取所有url

代码语言:javascript
复制
#调用re的compile,传入正则表达式,获取操作字符串的对象。pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
#调用re的findall()方法,传入一个正则对象和编码格式。就可以根据创建pattern时的正则表达式,获取text#中的所有符合要求的字符串urls = re.findall(pattern, text.decode('utf-8'))

这里urls就是url列表了

第三步就是区分出图片,然后下载下来:

代码语言:javascript
复制
#用于给图片命名index = 0
#循环列表for i in urls:    #不同图片后缀不同,区分一下    if i.endswith('.png'):
        #这里使用两个参数的open,传入文件名,和文件权限(二进制写入)        img = open('img' + str(index) + '.png', 'wb')
        #通过urls中的网址发送请求        req = urllib.request.urlopen(i)                    #读取文件流        buf = req.read()                #把流写入img文件对象中        img.write(buf)

这里就判断了png,其它图片也一样。就不写了。

代码在这,左边是下载好的图片。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新建文件夹X 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档