• 使用Scrapy爬取我主良缘所有图片


    目标网址:http://www.7799520.com/jiaoyou.html

    一 创建项目:

    scrapy startproject 项目名(我这里是wzlySpider)

    进入创建好的wzlySpider 目录文件下

    创建爬虫文件

    scrapy genspider wzly www.7700520.com

      注意:genspider命令会使用Scrapy默认的爬虫模板创建爬虫文件,当然这个文件也可以自己编写,但是推荐使用命令创建。

     二 编写爬虫

     创建好爬虫后,使用编辑器打开项目中的爬虫文件进行编写:

    wzly.py 爬虫文件

    # -*- coding: utf-8 -*-
    import scrapy
    import json
    
    
    class WzlySpider(scrapy.Spider):
        name = 'wzly'
        allowed_domains = ['7799520.com']
    
        # 这里使用列表推导式
        start_urls = [f'http://www.7799520.com/api/user/pc/list/search?marry=1&page={page}' for page in range(1, 100)]
    
        # 解析响应
        def parse(self, response):
            html = response.text
            # 转换json格式
            json_data = json.loads(html)
            # 获取信息  返回是列表
            for i in json_data["data"]["list"]:
                # i 是个字典
                img_url = i["avatar"]
                item = {
                    "img_url": img_url
                }
                yield item
    

    重点

    • name是爬虫的名字,是在genspider的时候指定的。
    • allowed_domains是爬虫能抓取的域名,爬虫只能在这个域名下抓取网页,可以不写。
    • start_urls是Scrapy抓取的网站,是可迭代类型,当然如果有多个网页,列表中写入多个网址即可,常用列表推导式的形式。
    • parse称为回调函数,该方法中的response就是start_urls网址发出请求后得到的响应。当然也可以指定其他函数来接收响应

    编写 pipelines.py 管道文件

    import scrapy
    
    from scrapy.pipelines.images import ImagesPipeline
    from scrapy.exceptions import DropItem
    
    
    class wzlyImagePipeline(ImagesPipeline):
    
        def get_media_requests(self, item, info):
            yield scrapy.Request(item["img_url"])
    
        def item_completed(self, results, item, info):
            image_path = [x['path'] for ok, x in results if ok]
            if not image_path:
                raise DropItem("该Item没有图片")
            return item
    

     

    设置 settings.py 配置文件

    1、激活管道文件

    ITEM_PIPELINES = {
       'wzlySpider.pipelines.wzlyImagePipeline': 300,
    }
    

      注意:300 表示执行顺序 ,一般为0-1000,数字越小执行顺序越大

    2、配置保存图片信息

    IMAGES_STORE = r'D:\wzly'    # 图片存储路径
    IMAGES_EXPIRES = 90             # 过期天数
    IMAGES_MIN_HEIGHT = 100         # 图片的最小高度
    IMAGES_MIN_WIDTH = 100          # 图片的最小宽度
    

    三 运行爬虫

    在 /wzlySpider 目录下运行scrapy crawl wzly 即可运行爬虫项目。运行截图如下:

    更多详细信息,请参考:Scrapy官方文档

  • 相关阅读:
    [Leetcode Week17]Copy List with Random Pointer
    [Leetcode Week16]Range Sum Query
    [Leetcode Week16]Insertion Sort List
    [Leetcode Week15]Populating Next Right Pointers in Each Node II
    [Leetcode Week15]Populating Next Right Pointers in Each Node
    [Leetcode Week15] Add Two Numbers
    [Leetcode Week14]Path Sum II
    [Leetcode Week14]Construct Binary Tree from Inorder and Postorder Traversal
    [Leetcode Week14]Maximum Binary Tree
    [Leetcode Week13]Search a 2D Matrix
  • 原文地址:https://www.cnblogs.com/renshaoqi/p/11177569.html
Copyright © 2020-2023  润新知