有理想,有抱负,懂得自律,相信在不久的将来,你会成功的!
打开微信搜索【孩子上学后】,关注这个不一样的程序员。
1.1 爬虫可以做什么
2.1 获取页面信息
2.2 获取所有图片的链接
2.3 下载并保存图片
最近学习的任务比较重,基本上没有时间学习自己喜欢的知识了,我最近也是非常郁闷的,现在学的《微机原理与计算机接口技术》这本书真的是搞死我了,不知道大家有什么好的视频资源可以推荐一下。我已经有好几天没有写博客了,今天乘机在上Python课的时候写篇文章,哈哈。。。
一、什么是网络爬虫

网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定规则,自动抓取万维网信息的程序或者是脚本。
大部分爬虫是按照发送请求——获得页面——解析页面——抽取并存储内容
,这样的流程来进行,其实这个也就是在模拟我们使用浏览器获取网页信息的过程。
简单的来讲,爬虫就是一个探测器,它基本上的操作就是模拟人的行为去各个网站溜达,点点按钮,查查数据,或者是去搞一些数据回来,就像是一个虫子在一栋楼里面跑来跑去。
1.1 爬虫可以做什么
如果我们可以用自动化的程序轻轻松松就能把你想要的数据爬下来,是不是很爽?例如去某些网站爬爬小电影啥的


又比如你在夜深人静寂寞难耐的时候,却苦于没有图片资源。。。
我们只要用Python写几行代码,然后一运行,这个程序就能帮我们爬取所有的图片或者是电影资源到我们的本地,完全不需要花费一点力气。

这个妹子觉得好看的在评论区扣好看,直接教你怎么样搞到手!
二、实战网络爬虫
本次爬取的图片来自?妹子图,点击链接即可访问。爬虫主要的操作就是向这个网站发送请求
,对页面进行分析
,从而获取所有图片的链接
,打包下载
。
每个过程我会用几个小模块的代码进行展示,要是实现不了,你来找我,我教你一步一步实现。
2.1 获取页面信息

点开链接之后点击街拍美女,我们要爬取的内容就是这个模块,其他模块的图片,你们自行想象。
这个时候你用力的点击F12,你可以弹出一个有点装逼的窗口,就像下面这样

这个玩意正是我们想要的,可以看到Element
标签下对应的HTML代码,其实这个就是网页的代码。
接下来,我们点击一下Network这个标签,然后刷新一下,可以看到有很多的请求。

那么怎么样获取该网页的源代码呢?不要担心,来看代码:
获取网页代码
def get_html(url):
response = requests.get(url, headers=headers)
html = response.content.decode('utf-8')
return html
运行之后,获取的页面信息如下图所示:

可以看到和我们在浏览器中看到的页面源码是一样的。
2.2 获取所有图片的链接

从上图你会发现,通过这样的方式可以快速获取每一张图片的链接,不知道你自己在做的时候有没有发现,每一张图片的外标签都是一样的,唯一不同的就是图片的链接。所以说可以通过一个通项式,将所有图片的链接都获取下来。这个通项式对应的库是xpath。如果你不会xpath,自行百度脑补xpath。
具体代码如下所示:
获取图片链接
def parse_html(html):
html = etree.HTML(html)
links = html.xpath('//p/img[@class="lazy"]/@data-original')
return links

获取的链接如上图所示
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

如上图所示,我已经将第二页的图片全部获取下来了,但是你肯定还不爽吧,明明有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)
获取的图片如下图所示:

最后
本次爬虫到这里就结束了,通过本篇文章你了解了什么是爬虫了吗?
相信你还会有一个问题,那些【性感妹子】【日本妹子】这些模块的妹子图怎么样获取呢?别担心,我已经为你准备好了。关注公众号【孩子上学后】回复妹子图
,即可获取源码。
路漫漫其修远兮,吾将上下而求索!
我是啃书君,一个专注于学习的人,你懂的越多,你不懂的越多,
更多精彩内容我们下期再见!
原文始发于微信公众号(小志Codings):女孩子勿点!只属于男孩子的Python爬虫
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/40076.html