项目实施依赖:

python,scrapy ,fiddler

scrapy安装依赖的包:

可以到https://www.lfd.uci.edu/~gohlke/pythonlibs/  下载 pywin32,lxml,Twisted,scrapy然后pip安装

项目实施开始:

1、创建scrapy项目:cmd中cd到需创建的文件目录下

scrapy  startproject guazi

2、创建爬虫:cd到创建好的项目下

 scrapy genspider gz guazi.com

3、分析目标网址:

  第一次我直接用的谷歌浏览器的抓包分析,取得UA和Cookies请求,返回的html数据完全缺失,分析可能是携带的Cookies

有问题,然后就用fiddler抓包才,得到Cookies与谷歌上得到Cookies多了UA,时间等参数,

4、将UA,Cookies添加到下载中间中去:

 class Guzi1DownloaderMiddleware(object):
def process_request(self, request, spider):
# 需要对得到的cookies处理成字典类型
request.cookies={}
request.headers["User-Agent"]=""

5、在settings中将DOWNLOADER_MIDDLEWARES打开

6、在spiders目录下找到gz.py开始编写爬虫逻辑处理

 import scrapy
import time class GzSpider(scrapy.Spider):
name = 'gz'
allowed_domains = ['guazi.com']
start_urls = ['https://www.guazi.com/cd/buy/0'] def parse(self, response):
# 得到页面上所有车辆的url
url_list = response.xpath('//ul[@class="carlist clearfix js-top"]//li/a/@href').extract()
url_list = [response.urljoin(url) for url in url_list]
url_list = [url.replace("cq", "cd") for url in url_list]
for url in url_list:
yield scrapy.Request(url=url, callback=self.parse1, dont_filter=True) # 获取下一页的url
next_url = response.urljoin(response.xpath('//span[text()="下一页"]/../@href').extract_first())
if next_url:
yield scrapy.Request(url=next_url, callback=self.parse, dont_filter=True)
time.sleep(2) def parse1(self, response):
# 判断是否有数据
if response.xpath('//h2/text()').extract_first():
print(response.xpath('//h2/text()').extract_first().strip())
item = {}
item["车型"] = response.xpath('//h2/text()').extract_first().strip()
item["选车类型"] = response.xpath('//h2/span/text()').extract_first()
item["价格/万"] = response.xpath('//div[@class="pricebox js-disprice"]/span[1]/text()').extract_first().strip()
item["新车价格"] = response.xpath('//div[@class="pricebox js-disprice"]/span[2]/text()').extract_first().strip()
item["上牌时间"] = response.xpath('//ul[@class="basic-eleven clearfix"]/li[1]/div/text()').extract_first().strip()
item["公里数"] = response.xpath('//ul[@class="basic-eleven clearfix"]/li[2]/div/text()').extract_first().strip()
item["排量"] = response.xpath('//ul[@class="basic-eleven clearfix"]/li[3]/div/text()').extract_first().strip()
item["变速箱"] = response.xpath('//ul[@class="basic-eleven clearfix"]/li[4]/div/text()').extract_first().strip()
item["配置信息"] = response.xpath('//span[@class="type-gray"]//text()').extract()
item["网址"] = response.url
yield item

7、启动爬虫并保存为csv文件

scrapy crawl gz -o guanzi.csv

8、最后得到了想要的二手车信息,贴上部分截图

Python scrapy框架爬取瓜子二手车信息数据的更多相关文章

  1. 爬虫入门(四)——Scrapy框架入门:使用Scrapy框架爬取全书网小说数据

    为了入门scrapy框架,昨天写了一个爬取静态小说网站的小程序 下面我们尝试爬取全书网中网游动漫类小说的书籍信息. 一.准备阶段 明确一下爬虫页面分析的思路: 对于书籍列表页:我们需要知道打开单本书籍 ...

  2. python scrapy框架爬取豆瓣

    刚刚学了一下,还不是很明白.随手记录. 在piplines.py文件中 将爬到的数据 放到json中 class DoubanmoviePipelin2json(object):#打开文件 open_ ...

  3. Python——爬取瓜子二手车

    # coding:utf8 # author:Jery # datetime:2019/5/1 5:16 # software:PyCharm # function:爬取瓜子二手车 import re ...

  4. 使用scrapy框架爬取自己的博文(2)

    之前写了一篇用scrapy框架爬取自己博文的博客,后来发现对于中文的处理一直有问题- - 显示的时候 [u'python\u4e0b\u722c\u67d0\u4e2a\u7f51\u9875\u76 ...

  5. scrapy框架爬取小说信息

    1.爬取目标网站:http://www.zhaoxiaoshuo.com/all.php?c=0&o=0&s=0&f=2&l=0&page=1 2.爬取目标网站 ...

  6. [Python学习] 简单爬取CSDN下载资源信息

    这是一篇Python爬取CSDN下载资源信息的样例,主要是通过urllib2获取CSDN某个人全部资源的资源URL.资源名称.下载次数.分数等信息.写这篇文章的原因是我想获取自己的资源全部的评论信息. ...

  7. python之简单爬取一个网站信息

    requests库是一个简介且简单的处理HTTP请求的第三方库 get()是获取网页最常用的方式,其基本使用方式如下 使用requests库获取HTML页面并将其转换成字符串后,需要进一步解析HTML ...

  8. scrapy框架爬取笔趣阁完整版

    继续上一篇,这一次的爬取了小说内容 pipelines.py import csv class ScrapytestPipeline(object): # 爬虫文件中提取数据的方法每yield一次it ...

  9. scrapy框架爬取笔趣阁

    笔趣阁是很好爬的网站了,这里简单爬取了全部小说链接和每本的全部章节链接,还想爬取章节内容在biquge.py里在加一个爬取循环,在pipelines.py添加保存函数即可 1 创建一个scrapy项目 ...

随机推荐

  1. Machine Learning in Action(2) 决策树算法

    决策树也是有监督机器学习方法. 电影<无耻混蛋>里有一幕游戏,在德军小酒馆里有几个人在玩20问题游戏,游戏规则是一个设迷者在纸牌中抽出一个目标(可以是人,也可以是物),而猜谜者可以提问题, ...

  2. javascript Date对象的介绍及linux时间戳如何在javascript中转化成标准时间格式

    1.Date对象介绍 Date对象具有多种构造函数.new Date()new Date(milliseconds)new Date(datestring)new Date(year, month)n ...

  3. Cocos2d-x动画播放(序列帧)

    简介 Cocos2d-x中,动画的具体内容是依靠精灵显示出来的,为了显示动态图片,我们需要不停切换精灵显示的内容,通过把静态的精灵变为动画播放器从而实现动画效果.动画由帧组成,每一帧都是一个纹理,我们 ...

  4. [2017-10-26]Abp系列——DTO入参验证使用方法及经验分享

    本系列目录:Abp介绍和经验分享-目录 声明式的入参验证逻辑 声明式入参验证主要使用了System.ComponentModel.DataAnnotations中提供的各种验证参数的Attribute ...

  5. zoom:1

    zoom这个特性是IE特有的属性.   zoom:1;一般是拿来解决IE6的子元素浮动时候父元素不随着自动扩大的问题,功能相当于overflow:auto,同样也可以用height:1%来代替zoom ...

  6. TestNG测试用例编写和执行

    编写TestNG用例测试基本上包括以下步骤: 编写业务逻辑 针对业务逻辑中涉及的方法编写测试类,在代码中插入TestNG的注解 直接执行测试类或者添加一个testng.xml文件 运行 TestNG. ...

  7. get_extension_funcs 返回某个模块下的所有函数

    array get_extension_funcs ( string $module_name )             (参数必选) 该函数根据 module_name 返回模块内定义的所有函数的 ...

  8. hdu-4989 Summary(水题)

    题目链接: Summary Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others) P ...

  9. [APIO 2010] 特别行动队

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1911 [算法] 设前i个士兵"修正"后的最大战斗力为fi 令su ...

  10. python下载各大主流视频网站电影

    You-Get 是一个命令行工具, 用来下载各大视频网站的视频, 是我目前知道的命令行下载工具中最好的一个, 之前使用过 youtube-dl, 但是 youtube-dl 吧, 下载好的视频是分段的 ...