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

Posted renshaoqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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官方文档

 

以上是关于使用Scrapy爬取我主良缘所有图片的主要内容,如果未能解决你的问题,请参考以下文章

使用scrapy爬取手机版斗鱼主播的房间图片及昵称

问题:用scrapy爬取下一页链接时返回空值?

如何用python实现爬取微博相册所有图片?

用scrapy爬取京东的数据

Scrapy爬取美女图片续集 (原创)

Scrapy爬取慕课网(imooc)所有课程数据并存入MySQL数据库