女孩子勿点!只属于男孩子的Python爬虫

有理想,有抱负,懂得自律,相信在不久的将来,你会成功的!

打开微信搜索【孩子上学后】,关注这个不一样的程序员


  • 1.1 爬虫可以做什么

  • 2.1 获取页面信息

  • 2.2 获取所有图片的链接

  • 2.3 下载并保存图片


最近学习的任务比较重,基本上没有时间学习自己喜欢的知识了,我最近也是非常郁闷的,现在学的《微机原理与计算机接口技术》这本书真的是搞死我了,不知道大家有什么好的视频资源可以推荐一下。我已经有好几天没有写博客了,今天乘机在上Python课的时候写篇文章,哈哈。。。

一、什么是网络爬虫

女孩子勿点!只属于男孩子的Python爬虫

网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定规则,自动抓取万维网信息的程序或者是脚本。

大部分爬虫是按照发送请求——获得页面——解析页面——抽取并存储内容,这样的流程来进行,其实这个也就是在模拟我们使用浏览器获取网页信息的过程。

简单的来讲,爬虫就是一个探测器,它基本上的操作就是模拟人的行为去各个网站溜达,点点按钮,查查数据,或者是去搞一些数据回来,就像是一个虫子在一栋楼里面跑来跑去。

1.1 爬虫可以做什么

如果我们可以用自动化的程序轻轻松松就能把你想要的数据爬下来,是不是很爽?例如去某些网站爬爬小电影啥的

女孩子勿点!只属于男孩子的Python爬虫

女孩子勿点!只属于男孩子的Python爬虫

又比如你在夜深人静寂寞难耐的时候,却苦于没有图片资源。。。

我们只要用Python写几行代码,然后一运行,这个程序就能帮我们爬取所有的图片或者是电影资源到我们的本地,完全不需要花费一点力气。

女孩子勿点!只属于男孩子的Python爬虫

这个妹子觉得好看的在评论区扣好看,直接教你怎么样搞到手!

二、实战网络爬虫

本次爬取的图片来自?妹子图,点击链接即可访问。爬虫主要的操作就是向这个网站发送请求对页面进行分析,从而获取所有图片的链接打包下载

每个过程我会用几个小模块的代码进行展示,要是实现不了,你来找我,我教你一步一步实现。

2.1 获取页面信息

女孩子勿点!只属于男孩子的Python爬虫

点开链接之后点击街拍美女,我们要爬取的内容就是这个模块,其他模块的图片,你们自行想象。

这个时候你用力的点击F12,你可以弹出一个有点装逼的窗口,就像下面这样

女孩子勿点!只属于男孩子的Python爬虫

这个玩意正是我们想要的,可以看到Element标签下对应的HTML代码,其实这个就是网页的代码。

接下来,我们点击一下Network这个标签,然后刷新一下,可以看到有很多的请求。

女孩子勿点!只属于男孩子的Python爬虫

那么怎么样获取该网页的源代码呢?不要担心,来看代码:

获取网页代码

def get_html(url):
    response = requests.get(url, headers=headers)
    html = response.content.decode('utf-8')
    return html

运行之后,获取的页面信息如下图所示:

女孩子勿点!只属于男孩子的Python爬虫

可以看到和我们在浏览器中看到的页面源码是一样的。

2.2 获取所有图片的链接

女孩子勿点!只属于男孩子的Python爬虫

从上图你会发现,通过这样的方式可以快速获取每一张图片的链接,不知道你自己在做的时候有没有发现,每一张图片的外标签都是一样的,唯一不同的就是图片的链接。所以说可以通过一个通项式,将所有图片的链接都获取下来。这个通项式对应的库是xpath。如果你不会xpath,自行百度脑补xpath。

具体代码如下所示:

获取图片链接

def parse_html(html):
    html = etree.HTML(html)
    links = html.xpath('//p/img[@class="lazy"]/@data-original')
    return links
女孩子勿点!只属于男孩子的Python爬虫

获取的链接如上图所示

2.3 下载并保存图片

其实下载图片和访问网站是一样的道理,你需要先对图片的链接发起请求,获取图片的二进制数据,在本地的时候在转成图片。

代码如下:

下载并保存图片

def save_img(links):
    global name
    for link in links:
        if not os.path.exists(path):
            os.mkdir(path)
        image = requests.get(link, headers=headers).content
        with open(path+'\{}.jpg'.format(name), 'wb'as f:
            f.write(image)
        name += 1

女孩子勿点!只属于男孩子的Python爬虫

如上图所示,我已经将第二页的图片全部获取下来了,但是你肯定还不爽吧,明明有100多页,你只是了获取一页,搞毛线啊。。。

不要担心,接下来我们来看看每一页的链接变化

https://www.mzitu.com/jiepai/comment-page-1/#comments 第一页
https://www.mzitu.com/jiepai/comment-page-2/#comments 第二页
https://www.mzitu.com/jiepai/comment-page-3/#comments 第三页
https://www.mzitu.com/jiepai/comment-page-4/#comments 第四页

这么聪明的你发现了吗?变化的数据只有1,2,3,4……

哈哈,这都被你发现了,你真是个小机灵鬼儿。

修改之前的main()函数

def main():
    url = 'https://www.mzitu.com/jiepai/comment-page-2'
    html = get_html(url)
    # print(html)
    links = parse_html(html)
    save_img(links)

修改之后的main()函数

def main():
    page = int(input('请输入你要爬取的页数(不能超过128页):'))
    for i in range(1, page+1):
        time.sleep(2)
        url = 'https://www.mzitu.com/jiepai/comment-page-{}/'.format(i)
        html = get_html(url)
        # print(html)
        links = parse_html(html)
        save_img(links)

获取的图片如下图所示:

女孩子勿点!只属于男孩子的Python爬虫

最后

本次爬虫到这里就结束了,通过本篇文章你了解了什么是爬虫了吗?

相信你还会有一个问题,那些【性感妹子】【日本妹子】这些模块的妹子图怎么样获取呢?别担心,我已经为你准备好了。关注公众号【孩子上学后】回复妹子图,即可获取源码。

路漫漫其修远兮,吾将上下而求索!

我是啃书君,一个专注于学习的人,你懂的越多,你不懂的越多

更多精彩内容我们下期再见!


原文始发于微信公众号(小志Codings):女孩子勿点!只属于男孩子的Python爬虫

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/40076.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!