爬取结果

爬取步骤

创建爬虫文件

进入cmd命令模式下,进入想要存取爬虫代码的文件,我这里是进入e盘下的E:\pystudy\scraping文件夹内

C:\Users\wei>E:E:\>cd E:\pystudy\scrapingE:\pystudy\scraping>scrapy startproject Bmw5
New Scrapy project 'Bmw5', using template directory 'f:\anaconda3\lib\site-packages\scrapy\templates\project', created in:E:\pystudy\scraping\Bmw5You can start your first spider with:cd Bmw5scrapy genspider example example.comE:\pystudy\scraping>cd Bmw5E:\pystudy\scraping\Bmw5> scrapy genspider Bmw5_spider autohome.com
Created spider 'Bmw5_spider' using template 'basic' in module:Bmw5.spiders.Bmw5_spider

2)打开pycharm,导入文件,效果如下

3)创建start.py文件,为了更好的运行爬虫

from scrapy import cmdline
cmdline.execute("scrapy crawl Bmw5_spider".split())
#至此,start文件建立好

4)修改settings.py

ROBOTSTXT_OBEY = False

打开头文件并加入'User-Agent',修改如下

DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36',
}

取消注释 ITEM_PIPELINES

ITEM_PIPELINES = {'Bmw5.pipelines.Bmw5Pipeline': 300,
}

主要程序

1 Bmw5Spider文件

import scrapy
from Bmw5.items import Bmw5Itemclass Bmw5SpiderSpider(scrapy.Spider):name = 'Bmw5_spider'allowed_domains = ['autohome.com']start_urls = ['https://car.autohome.com.cn/pic/series/65.html#pvareaid=2042194']# 其中start_urls需要我们修改,打开汽车之家官网,按品牌找车--> 宝马 --> 宝马--> 图片# 然后复制其地址,与原来的start_urls的参数替换即可def parse(self, response):uiboxs = response.xpath("//div[@class='uibox']")[1:]for uibox in uiboxs:title = uibox.xpath(".//div[@class='uibox-title']/a/text()").get()urls = uibox.xpath(".//ul/li/a/img/@src").getall()urls = list(map(lambda url: response.urljoin(url), urls))#print(urls)# # 后面这两行代码是需要编写完items.py后,才写的。item = Bmw5Item(title=title,urls=urls)yield item

2item文件


import scrapyclass Bmw5Item(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title = scrapy.Field()urls = scrapy.Field()

3 pipelines.py处理数据

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.htmlimport os
from urllib import request
# useful for handling different item types with a single interface
from itemadapter import ItemAdapterclass Bmw5Pipeline:def __init__(self):self.path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'images')if not os.path.exists(self.path):os.mkdir(self.path)def process_item(self, item, spider):title = item['title']urls = item['urls']title_path = os.path.join(self.path, title)if not os.path.exists(title_path):os.mkdir(title_path)for url in urls:# 这行代码是给每一种图片以它的地址命名,你仔细分析每一张图的图片地址前面的都一样,所以以下划线分割,取到最后一位字符就是名字。image_name = url.split("_")[-1]# 利用request库的urlretrieve将图片下载到title_path绝对路径。request.urlretrieve(url, os.path.join(title_path, image_name))return item

————————————————
参考链接:https://blog.csdn.net/weixin_44730235/article/details/104431208

改进

为什么要选择使用scrapy内置的下载文件的方法:

1.避免重新下载最近已经下载过的文件。
2.可以方便的指定文件存储的路径。
3.可以将下载的图片转换成通用的搭式。比如png.

4.可以方便的生成缩略图。
5.可以方便的检测图片的宽和高,确保他们满足最小限制。

6.异步下载,效率非常高。

下载文件的Files Pipeline :

当使用Files Pipeline下就文件的时候,按照以下步骤来完成:
1.定义好一个 Item,然后在这个item中定义两个属性,分别为files _url以及filesfiles _url是用来存储需要下戟的文件的url链接,需要给一个列表
2.当文件下载完成后,会把文件下簇的相关信息存储到 item的4fil1es 属性中。比如下载路径、下载的ur和文件的校验码等。

3,在配置文件 settimgs.py中配器 FILES_STORE,这个配置是用来设置文件下航下来的路径。
4.启动pipelime :在ITEM_PIPELINES中设嚣 'scrapy.pipelines.files.FilesPipeline':1 。

下载图片的Images Pipeline :
当使用images Pipeline下载文件的时候,按照以下步婆来完成:
1.定义好一个Item ,然后在这个 item中定义两个属性,分别为 image_url 以及images . image_url是用来存诸需要下载的阻片的url随接,需要给一个列表。
⒉.当配置下载完或后,会把文件下载的相关信息存储到 item的 images 属性中。比如下载路径、下载的url和图片的校验码等。

3.在配置文件 settings.py中配置工IMAGES_STORE,这个配置是用来设置图片下载下来的路径。
4.启动 pipeline :在ITEM_PIPELINES中设置

'scrapy.pipelines.images.ImagesPipeline': 1

按上面步骤修改后代码如下

导入OS

下载结果如图

若实现下载分类设置,期初实现的功能:

重写Pipeline方法,设置下载路径

class Bmw5ImangePipeline(ImagesPipeline):
from scrapy.pipelines.images import  ImagesPipelinefrom Bmw5 import settings
class Bmw5ImangePipeline( ImagesPipeline ):def get_media_requests(self, item, info):request_objs = super(Bmw5ImangePipeline, self).get_media_requests(item, info)for request_obj in request_objs:request_obj.item=itemreturn request_objs#发送下载请求def file_path(self, request, response=None, info=None, *, item=None):path = super(Bmw5ImangePipeline,self).file_path(request, response,info)title=request.item.get("title")images_store =settings.IMAGES_STOREcategory_path = os.path.join(images_store, title)if not os.path.exists(category_path):os.mkdir(category_path)image_name=path.replace("full/","")image_path=os.path .join(category_path,image_name)return image_path

修改设置文件下载

很快就下载完了

利用Scrapy框架爬取汽车之家图片(详细)相关推荐

  1. python爬虫利用Scrapy框架爬取汽车之家奔驰图片--实战

    先看一下利用scrapy框架爬取汽车之家奔驰A级的效果图 1)进入cmd命令模式下,进入想要存取爬虫代码的文件,我这里是进入e盘下的python_spider文件夹内 C:\Users\15538&g ...

  2. 使用scrapy框架爬取汽车之家的图片(高清)

    使用scrapy框架爬取汽车之家的图片(高清) 不同于上一篇的地方是,这篇要爬取的是高清图片,而不仅仅是缩略图. 先来看一下要爬取的页面:https://car.autohome.com.cn/pic ...

  3. 利用Scrapy框架爬取LOL皮肤站高清壁纸

    利用Scrapy框架爬取LOL皮肤站高清壁纸  Lan   2020-03-06 21:22   81 人阅读  0 条评论 成品打包:点击进入 代码: 爬虫文件 # -*- coding: utf- ...

  4. 爬取汽车之家图片 - scrapy - crawlspider - python爬虫案例

    爬取汽车之家图片 需求:爬取汽车之家某一个汽车的图片 ​ 一. 普通scrapy 第一步 页面分析 目标url: https://car.autohome.com.cn/photolist/serie ...

  5. 利用Scrapy框架爬取前途无忧招聘信息

    利用Scrapy框架爬取前途无忧招聘信息 关于安装和命令使用可参考:https://docs.scrapy.org/en/1.7/intro/install.html 先创建项目和爬虫文件 分析网站 ...

  6. python笔记之利用scrapy框架爬取糗事百科首页段子

    环境准备: scrapy框架(可以安装anaconda一个python的发行版本,有很多库) cmd命令窗口 教程: 创建爬虫项目 scrapy startproject qq #创建了一个爬虫项目q ...

  7. 利用scrapy框架爬取动态加载的数据

    在爬取有些网站的是后,数据不一定全部是可视化界面的,当我们拖动滚动条时才会加载其他的数据,如果我们也想爬取这部分数据,就需要使用selenium模块,在scrapy里可以结合该模块修改返回对象 一.编 ...

  8. 利用Scrapy框架爬取落网上的音乐文件

    今天爬取的是本人特别喜欢的一个音乐网站,www.luoo.net, 首先是设置item中需要保存的字段. items.py 字段名称包括期刊号,期刊名,期刊创建时间,单期期刊下的音乐名,作者名,音乐文 ...

  9. 利用scrapy框架爬取网易新闻排行榜

    wyxw.py中代码 # -*- coding: utf-8 -*- import scrapy from ..items import WyxwItemclass WyxwSpider(scrapy ...

最新文章

  1. Pytorch自定义Loss
  2. 对DataSet,DataRow,DateTable转换成相应的模型
  3. 编译过程中的链接地址对最终编译镜像文件的影响
  4. JavaScript Break 和 Continue 语句
  5. paip.php eclipse output echo 乱码
  6. 《微观经济学》第三章相互依存性与贸易的好处
  7. 【计算机视觉】人脸识别--人脸识别技术综述
  8. 动态ip如何做域名解析
  9. SpringBoot进阶-寻找附近的人,Redis实现交友APP(七)
  10. 个人见解:什么是WBS?
  11. Springboot毕设项目图书馆座位预定系统plo6rjava+VUE+Mybatis+Maven+Mysql+sprnig)
  12. CRM系统有哪些效果?
  13. 首都师范 博弈论 2 1 1占优策略与占优策略均衡
  14. Android开发中Post方式上传文件(头像之类的)
  15. 基本算法的设计与实现-史莱姆通话
  16. 北大本科生凭芯片研究获全球竞赛第一!一作发表8篇EDA领域顶会论文,“致力探索卡脖子难题”
  17. h5物体拖动_HTML5原生拖拽/拖放(drag drop)详解
  18. 网络协议实验四 ARP 协议分析实验
  19. 手机控制云服务器文件,手机控制云服务器文件
  20. Win10便签设置日历的一周第一天为周日的方法

热门文章

  1. 雷军为啥那么煽情:回到初心,芝麻开门
  2. MSA/MSB定位流程
  3. 利用GDAL(python)读取Landsat8数据
  4. 智慧校园 教师端操作手册
  5. 充电宝买啥牌子?便宜好用的充电宝品牌推荐
  6. 网易闪电邮显示正在联系服务器,网易闪电邮如何正确添加outlook邮箱
  7. 热点的ap频段哪个快,Ap频段2.4和5.0哪个快
  8. __slots__简介
  9. Shazam原理分析
  10. python模拟乘客进站流程