Python scrapy框架爬取瓜子二手车信息数据
项目实施依赖:
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框架爬取瓜子二手车信息数据的更多相关文章
- 爬虫入门(四)——Scrapy框架入门:使用Scrapy框架爬取全书网小说数据
为了入门scrapy框架,昨天写了一个爬取静态小说网站的小程序 下面我们尝试爬取全书网中网游动漫类小说的书籍信息. 一.准备阶段 明确一下爬虫页面分析的思路: 对于书籍列表页:我们需要知道打开单本书籍 ...
- python scrapy框架爬取豆瓣
刚刚学了一下,还不是很明白.随手记录. 在piplines.py文件中 将爬到的数据 放到json中 class DoubanmoviePipelin2json(object):#打开文件 open_ ...
- Python——爬取瓜子二手车
# coding:utf8 # author:Jery # datetime:2019/5/1 5:16 # software:PyCharm # function:爬取瓜子二手车 import re ...
- 使用scrapy框架爬取自己的博文(2)
之前写了一篇用scrapy框架爬取自己博文的博客,后来发现对于中文的处理一直有问题- - 显示的时候 [u'python\u4e0b\u722c\u67d0\u4e2a\u7f51\u9875\u76 ...
- scrapy框架爬取小说信息
1.爬取目标网站:http://www.zhaoxiaoshuo.com/all.php?c=0&o=0&s=0&f=2&l=0&page=1 2.爬取目标网站 ...
- [Python学习] 简单爬取CSDN下载资源信息
这是一篇Python爬取CSDN下载资源信息的样例,主要是通过urllib2获取CSDN某个人全部资源的资源URL.资源名称.下载次数.分数等信息.写这篇文章的原因是我想获取自己的资源全部的评论信息. ...
- python之简单爬取一个网站信息
requests库是一个简介且简单的处理HTTP请求的第三方库 get()是获取网页最常用的方式,其基本使用方式如下 使用requests库获取HTML页面并将其转换成字符串后,需要进一步解析HTML ...
- scrapy框架爬取笔趣阁完整版
继续上一篇,这一次的爬取了小说内容 pipelines.py import csv class ScrapytestPipeline(object): # 爬虫文件中提取数据的方法每yield一次it ...
- scrapy框架爬取笔趣阁
笔趣阁是很好爬的网站了,这里简单爬取了全部小说链接和每本的全部章节链接,还想爬取章节内容在biquge.py里在加一个爬取循环,在pipelines.py添加保存函数即可 1 创建一个scrapy项目 ...
随机推荐
- Aspose.cells 读取Excel表中的图片问题
一.说明 本文主要是讲解,怎么使用aspose.cells读取Excel表中的图片,并把图片转换成流或是image对象. 二.开发环境说明 开发工具vs2012,c#语言, 三.Aspose.cell ...
- memcmp和strcmp的返回值
注意,无论是内存比较还是字符串比较,这两个函数的返回值的意义是一样的. 如果相同,返回0 如果前面大于后面,返回大于0 如果前面小于后面,返回小于0 一定要注意,相同的时候是0,不是true.
- Java单元测试(Junit+Mock+代码覆盖率)---------转
Java单元测试(Junit+Mock+代码覆盖率) 原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测 ...
- 一文读懂P2P和区块链的异同
说到P2P,大家的第一反应肯定是网络贷款.非法集资...事实上,P2P不等于网络贷款,他是点对点,人对人的交易模式. 而对于近两年最热的区块链技术,他和P2P有什么区别呢?区块链数据交换模式包括私有链 ...
- github 工具命令集
- iOS开发过程中 xcode文件与Finder中文件保持一致 + 支付宝集成出错
目录 环境 前言 1.使用 Gem 安装 synx 2.直接在终端 Terminal 中开始使用 3.在使用的时候还可以加参数来实现不同的功能 4.解决项目中出现的一些 error 环境 OS X 1 ...
- druid.io 海量实时OLAP数据仓库 (翻译+总结) (1)——分析框架如hive或者redshift(MPPDB)、ES等
介绍 我是NDPmedia公司的大数据OLAP的资深高级工程师, 专注于OLAP领域, 现将一个成熟的可靠的高性能的海量实时OLAP数据仓库介绍给大家: druid.io NDPmedia在2014年 ...
- java运行Linux命令
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UT ...
- UIButton设置为圆形按钮并增加边框
设置按钮的长和宽尺寸一致(即为正方形),然后将圆角半径设为边长的一半,即形成一个圆形 UIButton *btn = [UIButton buttonWithType:UIButtonTypeSyst ...
- CMD help
ASSOC 显示或修改文件扩展名关联. ATTRIB 显示或更改文件属性. BREAK 设置或清除扩展式 CTRL+C 检查. BCDEDIT 设置启动数据库中的属性以控制启动加载. CACLS 显示 ...