• Python学习---爬虫学习[scrapy框架初识]


    Scrapy

    Scrapy是一个框架,可以帮助我们进行创建项目,运行项目,可以帮我们下载,解析网页,同时支持cookies和自定义其他功能。

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

    【更多参考】http://www.cnblogs.com/wupeiqi/articles/6229292.html

    scrapy框架介绍以及安装

     Linux
            pip3 install scrapy 
        Windows
            1.  pip3 install wheel
              1-1安装Twisted
                a. http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted, 下载:Twisted-17.1.0-cp35-cp35m-win_amd64.whl
                b. 进入文件所在目录
                c. pip3 install Twisted-17.1.0-cp35-cp35m-win_amd64.whl            
            2.  pip3 install scrapy
            3.  windows上scrapy依赖 https://sourceforge.net/projects/pywin32/files/

    image

    创建一个scrapy工程:

    创建一个scrapy工程:

    scrapy startproject scy

    scrapy genspider baidu baidu.com

    image

    baidu.py里面的内容

    image

       response.text可以打印具体的内容

    scrapy crawl baidu

    scrapy crawl baidu  --nolog   [不打印日志]

    image

    修改settting.py 让spider不去访问robot.txt文件

    image

    附: 查看spider文件的其他模板

    scrapy genspider --list

    image

    项目结构以及爬虫应用简介

    image

    文件说明:

    · scrapy.cfg  项目的主配置信息。(真正爬虫相关的配置信息在settings.py文件中)

    · items.py    设置数据存储模板,用于结构化数据,如:Django的Model

    · pipelines    数据处理行为,如:一般结构化的数据持久化

    · settings.py 配置文件,如:递归的层数、并发数,延迟下载等

    · spiders      爬虫目录,如:创建文件,编写爬虫规则

    爬取笑话网

    # -*- coding: utf-8 -*-
    import scrapy
    from scrapy.selector import HtmlXPathSelector
    from scrapy.http import Request
    class XiaohuarSpider(scrapy.Spider):
        name = "xiaohuar"
        allowed_domains = ["xiaohuar.com"]
        start_urls = ['http://www.xiaohuar.com/list-1-0.html']
    
        visited_set = set()
        def parse(self, response):
            self.visited_set.add(response.url)
            # 1. 当前页面的所有校花爬下来
            # 获取div并且属性为 class=item masonry_brick
            hxs = HtmlXPathSelector(response)
            item_list = hxs.select('//div[@class="item masonry_brick"]')
            for item in item_list:
                v = item.select('.//span[@class="price"]/text()').extract_first()
                print(v)
    
            # 2. 在当前页中获取 http://www.xiaohuar.com/list-1-d+.html,
            # page_list = hxs.select('//a[@href="http://www.xiaohuar.com/list-1-1.html"]')
            page_list = hxs.select('//a[re:test(@href,"http://www.xiaohuar.com/list-1-d+.html")]/@href').extract()
            for url in page_list:
                if url in self.visited_set:
                    pass
                else:
                    obj = Request(url=url,method='GET',callback=self.parse)
                    yield obj

    view-source:  http://www.521609.com/daxuexiaohua/

    image

    image

    image

    Django和scrapy框架的小对比

    Django和scrapy框架的小对比

    ########## scrapy ##########
    Django
    	django-admin startproject mysite  # 创建Django工程
    	cd mysite
    	python3 namage.py startapp app01
    	python3 namage.py startapp app02
    scrapy 
    	scrapy startproject scy          # 创建scrapy工程
    	cd scy
    	scrapy genspider chouti chouti.com
    	scrapy crawl 名字 --nolog    
  • 相关阅读:
    前序中序输出后序
    Blah数集
    中缀表达式转后缀表达式 (栈)
    1357:车厢调度 (栈)
    最长公共上升子序列 (LIS+LCS+记录)
    1481:Maximum sum (前缀和+dp)
    8464:股票买卖
    7627:鸡蛋的硬度
    2989:糖果
    U33405 纽约 (二分)
  • 原文地址:https://www.cnblogs.com/ftl1012/p/scrapy.html
Copyright © 2020-2023  润新知