前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >校花网爬取校花照片

校花网爬取校花照片

作者头像
全栈程序员站长
发布2022-09-07 09:44:35
3210
发布2022-09-07 09:44:35
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

代码语言:javascript
复制
"""
今天我们开始尝试,第一次学习爬虫的第一个案例,去校花网上爬取一些校花的照片

"""
from requests_html import HTMLSession
##首先导入这个包

# 然后定义一个类,将这个功能封装起来,将我们所要实现的功能,都封装到这个类中
# 在以后的编程中,尽量将实现同一功能的函数,都封装到一个类中,这样比较方便


class Spider(object):
 def __init__(self):
 self.session = HTMLSession() ##先 生成一个这样的对象

 def get_index_url(self):
 ##获取需要爬取的url路由
 for i in range(1, 4):
 ##分页处理,由于第一个路由没有规律,所以第一个需要特殊处理.
 ##这里我们的校花网图片只有三页,以后爬取其他网站,我们也要找到
 # 分页的url的规律,然后生成这样一个生成器,然后逐个返回
 if i == 1:
 yield 'http://www.xiaohuar.com/meinv/'
 #这是一个生成器对象 ,每次返回一个元素 下次继续从这里执行
 else:
 yield 'http://www.xiaohuar.com/meinv/index_%s' % i

 #当我们得到了要爬取图片的url之后,就要去找图片的具体的位置路径了.
 def get_img_url(self, index_url):###将页面的url传进来
 r = self.session.get(url=index_url)
 ###这个就是通过那个路由,模拟路由器向这个URL发送请求,得到那个返回的html
 for element in r.html.find('.items'): ##现在就是利用那个css选择器从那个返回的结果中筛选
 ##这里使用的是类选择器,凡是有 class = 'items'的都会被筛选出来
 img_element = element.find('img', first=True)##first=True 表示获取列表中的第一个元素
 ##然后继续在这个刚才筛选出来的结果中继续筛选,就标签选择器
 title_element = element.find('.p_title a', first=True)
 ##这个是获取图片的名称的那个a标签
 yield "http://www.xiaohuar.com" + img_element.attrs.get('src'), title_element.text
 ###将这两个标签对象返回出去,由于第一个路径不是绝对路径是一个相对路径,所以这里需要做一个拼接

 def save_img(self, img_url, img_name): ###保存图片到本地,并且命名
 img_name = img_name.replace('/', '').replace("\\", "") + ".jpg"
 ###因为我们之前获取的文件名中 可能会有 \ 或者 / 这种特殊符号,存成文件名会被识别成文件夹名称
 ##所以这里我们需要替换一下 双\\ 表示转义之后的 \
 r = self.session.get(url=img_url) ##根据图片的资源地址 获取资源
 with open(img_name, 'wb') as f:
 f.write(r.content)
 # r.content 就是那个图片的二进制数据流
 print("%s下载完成" % img_name)

 def run(self): ##执行函数
 for index_url in self.get_index_url():
 for img_url, img_name in self.get_img_url(index_url):
 self.save_img(img_url, img_name)


if __name__ == '__main__':
 xiaohua = Spider()
 xiaohua.run()

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155681.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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