PyCharm写你的scrapy项目(scrapy_splash的安装和使用O_O!)

12 篇文章 0 订阅
10 篇文章 0 订阅

Scrapy-splash的安装

>pip install scrapy-splash

官方的:https://github.com/scrapy-plugins/scrapy-splash#configuration

在PyCharm中直接File 里的settings中安装便好啦!

scrapy-splash模块主要使用了Splash. 所谓的Splash, 就是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览

Splash是用Python实现的! 安装后我们的scrapy就获取的爬取动态数据的能力!

当然真实可能没有这么简单的! 需要安装所需的启动装置 Docker

Docker 的使用配置

首先要去官网下载一个安装包(我是在windows下操作)如果是liunx 的话直接 yum install docker 下载啦

由于是外国的网站所以下载的话比较慢! https://www.docker.com/ 官网地址

要是嫌麻烦的话本人的百度云地址 https://pan.baidu.com/s/1xuh9DEZYvm9tqqL02gJ5fw 应该是最新版的

安装过程就直接点点就好啦!

这时桌面会有这三个东西!其中Docker Quicksta.. 就是Scrapy-splash启动装置!!

然后打开Docker Quicksta...

好了这样的话应该就是安装成功啦 第一次启动好像有点慢!

接下来配置我们需要的!!

# cmd中 拉取splash镜像
>docker pull scrapinghub/splash

第一次好像要下一些东西 有点烦!!

这是我用的镜像好像放到你安装docker的文件夹下也可以用https://pan.baidu.com/s/1xMi6aN1oLD1VEiBOAhDQ2g

然后运行这个会快点!

这些搞完之后 最后一步 开启 用docker运行scrapinghub/splash

>docker run -p 8050:8050 scrapinghub/splash

这时访问http://192.168.99.100:8050/

就可以看到

到此结束啦 Docker 安装成功

################################

配置我们的scrapy!

接着上一篇的PyCharm写你的scrapy项目(苦笑T_T!!) 我们来完善瓜子的爬虫!

import scrapy
from scrapy_splash import SplashRequest
from guazi.items import GuaziItem

class ErcarSpider(scrapy.Spider):
    name = 'ErCar'
    allowed_domains = ['www.瓜子.com']
    # 爬虫列表
    start_urls = ['https://www.瓜子.com/hf/buy/#bread']

    # 加一个这个函数就可以啦
    def start_requests(self):
        '''以直接生成一个SplashRequest对象并传递相应的参数,Scrapy会将此请求转发给Splash,       
           Splash对页面进行渲染加载,然后再将渲染结果传递回来,此时Response的内容就是渲染完成        
        的页面结果'''
        for url in self.start_urls:
            # callback 确定回调对象 'wait'等待加载
            yield SplashRequest(url=url,callback=self.parse, args={'wait': 1})
    # 获取内容
    def parse(self, response):
        item = GuaziItem()
        uls = response.css('ul.carlist.clearfix.js-top')
        try:
           for li in uls[0].css('li'):
           # 获取车名字
               item['CarInformation'] = li.css('h2::text').extract()[0].replace(' ','-')
               item['CarUrl'] ="https://www.guazi.com"+li.css('a::attr(href)').extract()[0]
               item['CarData'] = '-'.join(li.css('div[class=t-i]::text').extract())
               item['CarPrice'] = li.css('p::text').extract()[0]
               yield item
        except IndexError as IE:
           # 如果获取失败 在爬取一次
           yield scrapy.Request(response.url, callback=self.parse)
        # 获取下一页
        HXS = HtmlXPathSelector(response)
        xx = HXS.select('//li/a[contains(@href,"hf/buy/")]/@href')
        if xx:
            url = xx.extract()[-1]
            newUrl = 'https://www.瓜子.com' + url
            yield SplashRequest(url=newUrl, callback=self.parse, args={'wait': 1})

爬虫写完啦! 接下来就是配置啦!(settings.py)

如有兴趣文档奉上 https://github.com/scrapy-plugins/scrapy-splash#requests

# 首先将SPLASH_URL配置一下,在这里我们的Splash是在本地运行的
SPLASH_URL = 'http://192.168.99.100:8050'
# 去重过滤器
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
# 使用Splash的Http缓存
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

# 配置中间键
DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,
    'scrapy_splash.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
SPIDER_MIDDLEWARES = {
     # 设置scrapy_splash参数
    'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}

好啦 就这莫结束吧!开启动态爬取!nice!!! (其他的配置好像都没有动T_T!!)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值