Python爬虫之scrapy框架360全网图片爬取

在这里先祝贺大家程序员节快乐,在此我也有一个好消息送给大家,本人已开通了微信公众号,我会把资源放在公众号上,还请大家小手动一动,关注过微信公众号,回复1024即可获得python的零基础教学哦。


阅读目录

  • Python爬虫之scrapy框架360全网图片爬取
  • 前言
  • 一、分析网站?
    • 1.第一大分类
    • 2.分页原理
    • 3.ajax解析
  • 二、创建文件
    • 1.创建我们的images项目
    • 2.源码解读
    • 3.图片展示
  • 总结

前言

我们先进入今天的主题,我们都知道现在python爬虫的手段越来越多,比如通用爬虫, 模拟登陆,js逆向,app爬虫,自动化爬虫等。
今天我们就模拟一下我们通用爬虫,爬取360全网图片


首先我们要准备以下库

scrapy 2.4.0 库

一、分析网站?

我们的目标url=‘https://image.so.com/z?ch=beauty’
下面为两个图片简单分析了一下每个模块请求是不一样的。这个时候我们可以清楚获得第一个分类。

1.第一大分类

menus = ['beauty', 'copyright', 'wallpaper#/', 'design#/', 'funny', 'news', 'art', 'car', 'photography', 'food','home', 'pet']


2.分页原理

通过我们的f12可以清楚的看到此网站的是ajax渲染的而且以30为一个分页,我们知道了分页的原理。

3.ajax解析

这里要按我的点击,在Preview里会出来我们的json数据。标注的是我们要爬取的内容

二、创建文件

1.创建我们的images项目

scrapy startproject images

进行imaes项目里进行配置我们初始化的爬虫

cd images

scrapy genspider image image.so.com

2.源码解读

这个时候 我们打开我们pycharm 进行我们的编写代码

image.py

import json
import re
from urllib.parse import urlencodeimport scrapy
from images.items import ImagesItemclass ImageSpider(scrapy.Spider):# 爬虫名name = 'image'# 域名allowed_domains = ['image.so.com']# start_urls = ['https://image.so.com/zjl?']def start_requests(self):# 拼接的urlurl='https://image.so.com/zjl?'# 菜单menus = ['beauty', 'copyright', 'wallpaper#/', 'design#/', 'funny', 'news', 'art', 'car', 'photography', 'food','home', 'pet']for menu in menus:data = {'ch': menu,# 'sn': page * 30,'listtype': 'new','temp': '1'}for page in range(1,30):data['sn']=page*30base_url = url+urlencode(data)yield scrapy.Request(base_url,callback=self.parse)def parse(self, response, **kwargs):# 通过json库读取数据datas =json.loads(response.text)# 遍历数据for data in  datas['list']:print(data['imgurl'])item=ImagesItem()item['id']=data['id']               #图片iditem['imageurl']=data['qhimg_url']         #图片下载地址item['qhimg_thumb']=data['qhimg_thumb']   #图片缩略图下载a=data['title']# 去除非法法图片名title = re.sub('[\/:*?"<>|]', '-', a)item['title'] =title   #图片标题yield item

items.py

import scrapyclass ImagesItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()id=scrapy.Field()           #设置图片idimageurl=scrapy.Field()     #设置图片urltitle =scrapy.Field()       #设置图片标题qhimg_thumb=scrapy.Field()  #设置图片的缩略图地址pass

main.py

from scrapy import cmdline
cmdline.execute(('scrapy crawl image')

settings.py

ROBOTSTXT_OBEY = False
#启动图片管道
ITEM_PIPELINES = {'images.pipelines.ImagePipeline': 300,
}
IMAGES_STORE='./imagesss'  #这个是图片存放路径
#启动中间件
SPIDER_MIDDLEWARES = {'images.middlewares.ImagesSpiderMiddleware': 543,
}

middlewares.py

from scrapy import signals
from fake_useragent import UserAgent
from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware
#上面引用文件放最上面
#添加在最后
class UseAgentMiddleware(UserAgentMiddleware):def process_request(self, request, spider):ua =UserAgent()request.headers['User-Agent'] = ua.random

3.图片展示

总结

以上就是今天要讲的内容,这次介绍了scrapy对大型网站所有图片的采集,由于scrapy爬取速度非常快,很适合应用于大型数据爬取。

人生苦短,我用python

Python爬虫之scrapy框架360全网图片爬取相关推荐

  1. python网页爬虫漫画案例_Python爬虫-用Scrapy框架实现漫画的爬取

    14.jpg 在之前一篇抓取漫画图片的文章里,通过实现一个简单的Python程序,遍历所有漫画的url,对请求所返回的html源码进行正则表达式分析,来提取到需要的数据. 本篇文章,通过 scrapy ...

  2. python爬虫之Scrapy框架的post请求和核心组件的工作 流程

    python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...

  3. Python爬虫之Scrapy框架爬虫实战

    Python爬虫中Scrapy框架应用非常广泛,经常被人用于属于挖掘.检测以及自动化测试类项目,为啥说Scrapy框架作为半成品我们又该如何利用好呢 ?下面的实战案例值得大家看看. 目录: 1.Scr ...

  4. 19. python爬虫——基于scrapy框架爬取网易新闻内容

    python爬虫--基于scrapy框架爬取网易新闻内容 1.需求 [前期准备] 2.分析及代码实现 (1)获取五大板块详情页url (2)解析每个板块 (3)解析每个模块里的标题中详情页信息 1.需 ...

  5. python爬虫——用Scrapy框架爬取阳光电影的所有电影

    python爬虫--用Scrapy框架爬取阳光电影的所有电影 1.附上效果图 2.阳光电影网址http://www.ygdy8.net/index.html 3.先写好开始的网址 name = 'yg ...

  6. 14. python爬虫——基于scrapy框架爬取糗事百科上的段子内容

    python爬虫--基于scrapy框架爬取糗事百科上的段子内容 1.需求 2.分析及实现 3.实现效果 4.进行持久化存储 (1)基于终端指令 (2)基于管道 [前置知识]python爬虫--scr ...

  7. Python爬虫之scrapy下载文件和图片

    Python爬虫之scrapy下载文件和图片 一:pipeline 二:使用scrapy下载图片 2.1 创建scrapy项目 1.2 创建爬虫 1.3 配置文件设置 1.4 编写启动文件 1.5 爬 ...

  8. Python爬虫:运用多线程、IP代理模块爬取百度图片上小姐姐的图片

    Python爬虫:运用多线程.IP代理模块爬取百度图片上小姐姐的图片 1.爬取输入类型的图片数量(用于给用户提示) 使用过百度图片的读者会发现,在搜索栏上输入关键词之后,会显示出搜索的结果,小编想大多 ...

  9. 踩坑的Python爬虫:新手如何在一个月内学会爬取大规模数据?

    Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,让爬虫变得 ...

最新文章

  1. python 测试框架之---testtools
  2. 【数理知识】特征值、特征向量、左特征向量
  3. python STL分解
  4. 我的世界java怎么玩起床战争_我的世界怎么玩起床战争_我的世界起床战争怎么玩_52pk单机游戏...
  5. 使用adb查看数据库的一些命令
  6. CCF数图焦点 | 数据治理
  7. 报 There is insufficient memory for the Java Runtime Environment to continue. 的问题
  8. VMware配置上限(Configuration Maximums)
  9. android 血压计开发,智能血压计方案开发
  10. Tasker to stop Poweramp control for the headset while there is an incoming SMS - frozen
  11. 数据迁移-商品数据迁移实践
  12. excel导入sqlsever
  13. 常用颜色中英文名称及RGB数值表
  14. php中怎么获取提交时间,php – 通过curl_getinfo()获取详细信息来获取cURL请求的时间...
  15. 计算机怎么看事件管理,win7系统事件查看器怎么打开
  16. “大劈棺”与“小手段”
  17. torch.isfinite()、torch.isinf()、torch.isnan()
  18. UVA - 10158 War
  19. 赵栋 java_赵栋 201771010137 《面向对象程序设计(java)》
  20. 1089 烽火传递(单调队列优化)

热门文章

  1. Stream 校验两个集合元素是否完全一致
  2. GNN-2008:Original GNN【消息传递(前向传播):聚合函数+更新函数+输出函数】【核心:不动点理论】【梯度优化:用Almeida-Pineda算法,而不是用BPTT(反向传播)算法】
  3. 设置配备部署撑持MTS下散布事情的Oracle
  4. dnf剑魂buff等级上限_DNF:鬼剑士buff换装、白金徽章以及时装详解,萌新也能变老手...
  5. terraform_Kubernetes初学者的Terraform指南
  6. Windows Server2012R2插网线无网络---网络受限
  7. linux usb gadget printer使用
  8. MEM/MBA数学强化(03)整式与分式的运算
  9. pdf文件两栏内容提取信息思路
  10. win10家庭版加密oracle修正,WIN10更新后解决credssp加密oracle修正问题