老司机带你用python来爬取妹子图

这是小詹关于爬虫的第③篇文章!

这篇文章来自一个大一学弟的公众号「日常学python」

虽然这篇文章难度不大,但是对新手来说绝对是福利,爬天爬地爬空气你懂得~

requests库和正则表达式很重要的,一定要学会!一定要学会!一定要学会!

来到今天的重点,我今天发现一个网站很好爬的,非常适合新手,我没有设置请求头什么的爬了很多遍很没有封我ip和给我返回403之类的,所以他对我们第一次玩爬虫的人来说很友好。这个网站就是今日头条。最重要的是这里面有很多美女图片,我们可以把它们爬下来!!!是不是想想都要流鼻血啊?

我们今天要爬的就是他的图集,先看看网站。搜索美女,然后点击图集,可以看到下面这些内容

我们要做的就是把上面的图片给爬下来。

那开始分析网站。按下f12,然后点击network,刷新下你可以看到这些

进行寻找哪个请求返回这些图片的,在网页上可以看到图片会随着你下拉网页而进行显示更多的图片,这是动态加载的,所以可以轻松知道这个可以在xhr文件中找到,果然,你看

不断往下拉,不断地发送请求,点击这个请求看看是返回什么数据

可以看到这是个json,里面有图片的url,这个就是我们要找的东西,那我们可以用json库来解析,还有这个网站是get请求,这样就可以用requests库来发送然后解析下就可以了,非常简单。

那么分析就到这里,直接上代码

#encoding=utf-8
import requests, os
path_a = os.path.abspath('.')
kw = ''
while True:
    kw = input('请输入你要获取的图片(若想结束请输入1)')
    if kw == '1':
        print('已退出,你下载的图片已保存在'+path_a+',请查看!')
        break
    for x in range(0, 1000, 20):
        url = 'https://www.toutiao.com/search_content/?offset='+str(x)+'&format=json&keyword=%s&autoload=true&count=20&cur_tab=3&from=gallery' % kw
        response = requests.get(url)
        data = response.json()['data']
        if not data:
            print('下载'+kw+'图片完毕,请换个关键词继续')
            break
        n = 1  # 记录文章数
        for atlas in data:
            # 创建目录
            title = atlas['title']
            print(atlas)
            try:
                if title not in os.listdir('.'):  # 防止文件名已经存在
                    os.mkdir(title)
            except OSError as e:
                print('文件名出错,创建目录失败,重新创建一个随机名字')
                title = kw + '文件名出错'+str(x)
                if title not in os.listdir('.'):
                    os.mkdir(title)
            k = 1  # 记录下载的图片数
            path = os.path.join(path_a, title)
            # 转进图片目录
            os.chdir(path)
            for image in atlas['image_list']:  # 这个链接获取的图片是小张的,看着不够爽,所以下面替换成大的图片
                image_url = image['url'].replace('list', 'large')  # 改个链接获取大的图片
                atlas = requests.get('http:'+image_url).content
                with open(str(k)+'.jpg', 'wb') as f:  # 把图片写入文件内
                    f.write(atlas)
                print('下载完第%d个文章的%d幅图完成' % (x+n, k))
                k += 1
            n += 1
            # 转出图片目录
            os.chdir(path_a)

这个只用了requests库基本就能完成了,os库是用来操作文件目录的,这里就不详细说了。可以看到,代码量非常少,除开注释就大概四十行吧,是不是比其他语言简洁多了?是不是requests库很好用?这里可以充分体现了人生苦短,我用python的真理。

而且,他还可换关键字继续搜,你想搜什么照片都可以。

最后给你们看下结果

不说那么多了,我要去买营养快线了。

上述文章如有错误欢迎在留言区指出,如果这篇文章对你有用,点个赞,转个发如何?

原文发布于微信公众号 - 小小詹同学(xiaoxiaozhantongxue)

原文发表时间:2018-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏耕耘实录

H3C的CAS3.0系统下Windows Server 2008 R2 Standard版增加内存的方法

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

1054
来自专栏北京马哥教育

十大企业级Linux服务器安全防护要点

糖豆贴心提醒,本文阅读时间8分钟 随着开源系统Linux的盛行,其在大中型企业的应用也在逐渐普及,很多企业的应用服务都是构筑在其之上,例如Web服务、数据库服...

54316
来自专栏Netkiller

金融交易系统设计思路

文章还没有写完,接下来笔者要出差一段时间,回来在继续完成该文。 目录 1. 架构纵览 1.1.1. 网站前端 1.1.2. 网站后台 1.1. 网站部分 1.2...

6167
来自专栏区块链

服务器被入侵了怎么办?

遇到服务器被黑,很多人会采用拔网线、封 iptables或者关掉所有服务的方式应急,但如果是线上服务器就不能立即采用任何影响业务的手段了,需要根据服务器业务情况...

1.8K8
来自专栏木头编程 - moTzxx

小程序富文本解析wxParse 安卓手机部分不支持的一种情形

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

2664
来自专栏SDNLAB

OpenNF:驱动网络功能控制创新

1 介绍 网络功能(NFs),或中间件是以复杂方式检测和更改数据包和流的系统。比如:入侵检测系统(IDSs),负载均衡器,缓存代理等。NFs在确保安全性,提高...

3714
来自专栏安恒信息

研究发现密码管理工具的严重安全缺陷

加州伯克利的研究人员发现了流行密码管理工具的严重安全缺陷。他们将在下个月举行的安全会议上公开报告(PDF)。 研究人员检查了LastPass和其它四个基于Web...

34110
来自专栏Debian社区

Debian、Ubuntu安装源配置文件说明

源列表主文件 /etc/apt/sources.list,兼取 /etc/apt/sources.list.d/*,结果以并集论。 源列表文件以行为单位,每行...

1472
来自专栏FreeBuf

安全科普:流量劫持能有多大危害?

作者 gethostbyname 上一篇文章,介绍了常见的流量劫持途径。然而无论用何种方式获得流量,只有加以利用才能发挥作用。 不同的劫持方式,获得的流量也有所...

2496
来自专栏网站漏洞修补

公司网站被黑了跳转到彩票、博彩网站怎么处理?

最近一段时间,我们SINE安全公司一连接到数十个公司网站被跳转到彩票,博彩网站上去,客户反映从百度搜索网站进去,直接跳转到彩票网站上,直接输入网址没有跳转,导致...

1.6K5

扫码关注云+社区

领取腾讯云代金券