资讯专栏INFORMATION COLUMN

练手项目3:访问图像网站,查找某类型图片,下载查询结果

Yuqi / 1781人阅读

摘要:一般常用爬虫下载文本,图片,视频,声音。此处以下载图片为例,图片也是相对最容易。格式的文件下载只要抓包或者得到请求链接,那么将上面的程序稍稍改动一下,即可下载。比如只要能试听,就会有链接。声明部分参考了很有趣儿的爬虫分享

一般常用爬虫下载文本,图片,视频,声音。此处以下载图片为例,图片也是相对最容易。

#-*- coding:utf-8 -*-
import os,re,requests
#获取图片链接(以百度图片为例,因为部分参考了voidsky_很有趣儿的爬虫分享)
keyword=raw_input("please input what you want to serch:")
url="https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word="+keyword+"&ct=201326592&ic=0&lm=-1&width=&height=&v=flip"
page=requests.get(url).text
pic_link=re.findall(""objURL":"(.*?)",",page,re.S)

#将图片文件写入本地
i=1
for item in pic_link:
#需要添加捕获异常,因为不是所有图片都能下载
    try:
        pic=requests.get(item).content
    except requests.exceptions.ConnectionError:
        print "Sorry.The current pic is not avilible."
        continue
    filename=str(i)+(".jpg")
    path=os.path.join("F:","001",filename)#这个地址是我电脑的地址,可修改输出地址
    file=open(path,"wb")
    file.write(pic)
    file.close()
    print ("have down", i)
    i+=1
print ("download" ,i-1)

总结和反思:
1、url变量本身就是str类型,无需纠结‘ ’或“ ”;
2、requests.get().text 获取了链接地址的源代码文本;
requests.get().text 获取链接地址的二进制内容,用于将图片,声音,视频等写入这些文件中;
3、涉及这样批量下载,需要处理捕获异常,不然程序就会在出错处中断,不会继续运行;
4、continue 使得程序即使报错了,也能继续下一个循环,即图片下载;
5、在正则匹配中re.S参数设置,表示把字符串当做一个整体,n也当做字符串而不是换行,不因换行而重新匹配,可跨行匹配,。
6、MP3、MP4格式的文件下载,只要抓包或者F12得到请求链接,那么将上面的程序稍稍改动一下,即可下载。比如:
只要能试听,就会有链接。

声明:部分参考了voidsky_很有趣儿的爬虫分享:https://www.jianshu.com/p/19c...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41261.html

相关文章

  • nodejs练手爬虫+API测试

    摘要:知乎日报代理首先感谢提供的分析使用详情请参考他提供的参数和地址代理转发的使用为前缀进入代理路由启动界面图像获取后为图像分辨率,接受任意的格式,为任意非负整数,返回值均相同返回值示例最新消息等具体参考提供的分析中的使用方式以及参数含义。 项目说明 这是一个基于express的node后端API服务,当时只是想抓取字幕组网站的下载资源,以备以后通过nas的方式去自动下载关注的美剧。不过后来...

    bigdevil_s 评论0 收藏0
  • 前端的性能优化(针对内容方面)

    摘要:避免重定向重定向用和状态码,下面是一个有状态码的头浏览器会自动跳转到域指明的。除此之外还有别的跳转方式元标签和,但如果你必须得做重定向,最好用标准的状态码,主要是为了让返回按钮能正常使用。要提高性能,优化这些响应至关重要。 性能优化 减少Http请求: 1.尽量减少HTTP请求数   80%的终端用户响应时间都花在了前端上,其中大部分时间都在下载页面上的各种组件:图片,样式表,脚本,...

    coordinate35 评论0 收藏0
  • 前端的性能优化(针对内容方面)

    摘要:避免重定向重定向用和状态码,下面是一个有状态码的头浏览器会自动跳转到域指明的。除此之外还有别的跳转方式元标签和,但如果你必须得做重定向,最好用标准的状态码,主要是为了让返回按钮能正常使用。要提高性能,优化这些响应至关重要。 性能优化 减少Http请求: 1.尽量减少HTTP请求数   80%的终端用户响应时间都花在了前端上,其中大部分时间都在下载页面上的各种组件:图片,样式表,脚本,...

    coordinate35 评论0 收藏0

发表评论

0条评论

Yuqi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<