一.Scrapy安装

1.支持的 Python 版本

Scrapy 需要 Python 3.6+,C Python 实现(默认)或 pypy7.2.0+ 实现(请参见 Alternate Implementations )

2.安装 Scrapy

如果你在用 Anaconda 或 Miniconda ,您可以从 conda-forge 频道,它有针对 Linux、Windows 和 macOS 的最新软件包。如果您已经熟悉了python 包的安装,那么可以从 pypi 安装 scrappy 及其依赖项,方法是

pip install Scrapy

二.基于Scrapy爬取二手车信息

1.创建爬虫项目

scrapy strartproject taochewang #创建项目
cd taochewang #进入项目文件
scrapy genspider taoche #创建爬虫

项目结构图

taoche.py是爬虫文件

items.py用来编写需要抓取的数据信息

middlewares.py是中间件

pipleines.py管道文件,存储需要

settings.py项目配置文件

2.打开网站,分析需要抓取的数据

我们需要抓取主页面图片链接,标题,年份,公里数,地址以及价格,然后进入详情界面,需要抓取详情页面的参数配置,品牌,发动机,驱动方式和车辆级别。

3.修改配置文件

USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" # 伪装请求头# Obey robots.txt rules
ROBOTSTXT_OBEY = False #修改协议为False
LOG_LEVEL = 'WARNING' #设置日志等级
LOG_FILE = './taoche.log' #日志保存位置啊

4.编写items.py文件

import scrapyclass TaochewangItem(scrapy.Item):image = scrapy.Field()title = scrapy.Field()price = scrapy.Field()LtIme = scrapy.Field()mileage = scrapy.Field()city = scrapy.Field()detail = scrapy.Field()class TaocheParamTtem(scrapy.Item):brandmodel = scrapy.Field()engine = scrapy.Field()drivemode = scrapy.Field()vehiclelevel = scrapy.Field()description = scrapy.Field()

5.编写taoche.py文件

import scrapy
import logging
from taochewang.items import TaochewangItem
from taochewang.items import TaocheParamTtemlogger = logging.getLogger(__name__)class TaocheSpider(scrapy.Spider):name = "taoche"start_urls = ["https://beijing.taoche.com/all/"]url = 'https://beijing.taoche.com/all/?page=%d'def parse(self, response):max_page = response.xpath('//*[@id="containerId"]/div[1]/div[6]/div/div/a[last()-1]/text()').extract_first()for page in range(1, int(max_page) + 1):new_url = self.url % pageyield scrapy.Request(url=new_url, callback=self.taoche_pares)def taoche_pares(self, response):car_list = response.xpath('/html/body/div[8]/div[2]/div[1]/div[5]/div/ul/li')for car in car_list:image = car.xpath('./div[1]/div/a/img/@data-src').extract_first().strip()title = car.xpath('./div[2]/a/span/text()').extract_first().strip()price = car.xpath('./div[2]/div[1]/i/text()').extract_first().strip()LtIme = car.xpath('./div[2]/p/i[1]/text()').extract_first().strip()mileage = car.xpath('./div[2]/p/i[2]/text()').extract_first().strip()city = car.xpath('./div[2]/p/i[3]/text()').extract_first().strip()item = TaochewangItem()item['image'] = imageitem['title'] = titleitem['price'] = priceitem['LtIme'] = LtImeitem['mileage'] = mileageitem['city'] = citydetail_url = car.xpath('./div[1]/div/a/@href').extract_first()yield scrapy.Request(url=detail_url, callback=self.detailparse, meta={'item': item})def detailparse(self, response):detailist = response.xpath('/html/body/div[9]')for detail in detailist:brandmodel = detail.xpath('./div[10]/div[2]/div[1]/ul/li[1]/span/a/text()').extract_first().strip()engine = detail.xpath('./div[10]/div[2]/div[1]/ul/li[3]/span/text()').extract_first().strip()drivemode = detail.xpath('./div[10]/div[2]/div[1]/ul/li[4]/span/text()').extract_first()vehiclelevel = detail.xpath('./div[10]/div[2]/div[1]/ul/li[5]/span/text()').extract_first().strip()description = detail.xpath('./*[@id="divStateDescExpandShrink"]/text()').extract_first().strip()taocheitem = TaocheParamTtem()taocheitem['brandmodel'] = brandmodeltaocheitem['engine'] = enginetaocheitem['drivemode'] = drivemodetaocheitem['vehiclelevel'] = vehicleleveltaocheitem['description'] = descriptionitem = response.meta['item']item['detail'] = taocheitemlogger.warning(item)

6.启动爬虫项目

scrapy crawl taoche

数据直接保存在日志文件中了

scrapy项目实战二手车数据抓取相关推荐

  1. Python3网络爬虫之Scrapy框架实现招聘数据抓取

    项目需求: 某招聘网上面有公司发布的的各种工作岗位,进入首页 https://careers.tencent.com/ 后可见 到一个搜索框,如下图所示: 在搜索框输入岗位名称,跳转到如下图所示页面, ...

  2. python爬取淘宝商品做数据挖掘_Python 3爬虫 数据清洗与可视化实战 Python数据抓取技术 python3网络爬虫教程书籍 运用Python工具获取电商平台页面数据挖掘书籍...

    A8 书    名:Python 3爬虫 数据清洗与可视化实战 作 译 者:零一,韩要宾,黄园园 出版时间:2018-03 千 字 数:200 版    次:01-01 页    数:212 开   ...

  3. Python爬虫编程思想(133):项目实战--利用Appium抓取微信朋友圈信息

    本文利用Appium实现一个抓取微信朋友圈信息的爬虫.在编写爬虫之前,先要启动Appium服务器. 编写基于Appium的爬虫,关键就是分析App每个界面相关元素的特征,也就是如何获取这些元素,然后在 ...

  4. python爬取新浪微博数据中心_Python爬虫框架Scrapy实战之批量抓取招聘信息

    网络爬虫抓取特定网站网页的html数据,但是一个网站有上千上万条数据,我们不可能知道网站网页的url地址,所以,要有个技巧去抓取网站的所有html页面.Scrapy是纯Python实现的爬虫框架,用户 ...

  5. Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  6. python爬取app播放的视频,Python爬虫工程师必学——App数据抓取实战视频教程

    爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统数据抓取.本课程主要为同学讲解如何用python实现App数据抓取,课程从开发环境搭建,App爬虫必备利器详解,项目实战,到最后的多App ...

  7. python编程理论篇_Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  8. python爬虫入门实战争胜法_Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  9. python—简单数据抓取七(采取蘑菇API代理设置scrapy的代理IP池并利用redis形成队列依次使用,利用ip池访问网页并将scrapy爬取转移到items的数据存入到数据库)

    学习目标: Python学习二十七-简单数据抓取七 学习内容: 1.采取蘑菇API代理设置scrapy的代理IP池并利用redis形成队列依次使用 2.利用ip池访问网页并将scrapy爬取转移到it ...

最新文章

  1. win7计算机组策略打不开,win7系统gpedit.msc组策略打不开该怎么解决?方法步骤
  2. P1102 A-B 数对(二分,映射)难度⭐
  3. oracle error-1555,从另外一个角度看ORA-1555
  4. python下载库报错_下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决...
  5. python将dataframe写入csv_Pandas dataframe数据写入文件和数据库
  6. 使用jdbc执行SQL实现登录查询2-避免SQL注入版
  7. 国庆档43.87亿收官:《长津湖》一家独大 影视股喜忧参半
  8. solaris如何启动ssh服务
  9. 深度学习可解释性资料整合
  10. php必填参数校验,laravel请求参数校验方法
  11. chrome插件“京东商品佣金助手”之项目介绍(一)
  12. 《计算机组成原理(微课版)》第1章课后习题答案
  13. Linux下kafka之C/C++客户端库librdkafka的编译,安装以及函数介绍
  14. [ASP.NET]基于asp.net的客户信息反馈系统
  15. 使用 Suspense 改善 Vue 3 中的用户体验
  16. 论文笔记:CVPR2022 Regional Semantic Contrast and Aggregation for Weakly Supervised Semantic Segmentation
  17. 01背包问题---动态规划
  18. 软件项目需求调研过程
  19. 今天电面阿里飞猪的惨烈教训
  20. 为什么我从PR里面导出来的视频,在电脑上可以正常播放,但是上传到天猫、淘宝、抖音、微信等平台后就变的模糊,类似于重影的效果

热门文章

  1. 韩寒代言 一加手机3”盲售“手机行业的创新开创者 一加手机3
  2. 激光雷达方程应用(使用MATLAB和Python语言得到回波强度、距离平方矫正信号、消光系数随距离的变化曲线)
  3. 【全奖博士生】悉尼科技大学ReLER实验室招收CV/AI方向
  4. Minecraft (我的世界)服务器搭建经验分享
  5. python延时程序不能用_如何在Python中进行时间延迟?
  6. 6-2 输出每个月的天数
  7. 使用weixin-java-open请求微信第三方平台接口超时
  8. Javascript之File和Blob函数的使用、创建文件上传服务器
  9. CSS3只让背景图片旋转180度
  10. IPv6多径路由添加