Python爬虫实战—vmgrils图片网站

一、实战背景

唯美女生:https://www.vmgirls.com/

少女情怀总是诗,一双发现美的眼睛!

工具:Python3.7,PyCharm

程序所需用到的模块:requests,fake_useragent,parsel,os,time

所使用的解析器:xpath

二、明确目标

明确我们需要爬取哪个图片集的图片资源,这里以少女情怀总是诗为例。

image.png

2.1 分析我们需要爬取的图片链接地址

按F12打开开发者工具

这里可以看见,选择 a 标签中的 href 属性或者 img 标签中的 src 属性都是可以的,我这里就选择 a 标签中的 href属性

image.png

2.2 分析节点,使用xpath解析器审查元素

image.png

三、编写代码

"""
    Python爬取 https://www.vmgirls.com/ 网站的图片
"""
import requests
from fake_useragent import UserAgent
import parsel
import time
import os


class VmGirlsPhotos(object):
    """
    类说明:下载 vmgirls图片网站的《少女情怀总是诗》图集
    """

    def __init__(self):
        self.server = "https://www.vmgirls.com/"
        self.target = "https://www.vmgirls.com/13344.html"
        self.headers = {"User-Agent": UserAgent().random}
        self.dir_name = "F:\Python\爬虫资源\girls图片资源\\"
        self.urls = []  # 存放图片链接地址

    def isDir_existed(self):
        """
        函数说明:判断当前目录是否存在,没有则创建
        :return:
        """
        if not os.path.exists(self.dir_name):
            os.mkdir(self.dir_name)

    def get_urls(self):
        """
        函数说明:获取每张图片的链接
        :return:
        """
        """ 请求网页 """
        response = requests.get(url=self.target, headers=self.headers)
        html = response.text

        """ 解析网页 """
        selector = parsel.Selector(html)
        # 返回的是所有的图片链接地址的列表
        url_list = selector.xpath('.//div[@class="nc-light-gallery"]/p/a/@href').getall()
        for url in url_list:
            self.urls.append(self.server + url)

    def write(self, dir_name, url):
        """
        函数说明:下载图片
        :return:
        """
        # https://www.vmgirls.com/image/2019/12/2019122411001976-scaled.jpeg
        # 2019122411001976-scaled.jpeg 就作为保存图片的名称
        fileName = url.split('/')[-1]
        response = requests.get(url=url, headers=self.headers)
        with open(dir_name + fileName, 'wb') as file:
            file.write(response.content)
        file.close()


if __name__ == '__main__':
    print("<<<<<=====图片资源开始下载=====>>>>>")
    vp = VmGirlsPhotos()
    vp.isDir_existed()
    vp.get_urls()
    print("图片资源有{}张".format(len(vp.urls)))

    for i in range(len(vp.urls)):
        vp.write(vp.dir_name, vp.urls[i])
        print("正在下载第{}张图片".format(str(i + 1)))
        time.sleep(1)

    print("<<<<<=====图片资源下载完成=====>>>>>")

四、效果展示

image.png

image.png

开车吗表情包 [什么时候开车?我营养跟得上]

做一个文明守法的好网民,不要爬取公民的隐私数据,不要给对方的系统带来不必要的麻烦

此篇博客仅作学习用途

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值