2018-11-07 Scrapy 实战(1)--初识

文章由本人博客首发转载请注明链接: http://qinfei.glrsmart.com/2018/11/06/scrapy-shi-zhan/

前言

一直知道有一个叫做 scrapy 的神器, 但是一直没有用过, 今天我找到了一个网站似乎很好的样子, 上面资料很玄乎,所以就爬了玩玩, 请原谅我不能说网站名称,大家都跟着我爬数据人家还玩不玩了? 你要是练手的话请自行寻找目标啦...

概览

这里放一个scrapy 官方图片,虽然知道哪天图片丢了会变得很丑


2018-11-07 Scrapy 实战(1)--初识
scrapy_architecture.png

安装

请根据附件中的列表自行安装 requiremtnes.txt
pip install -r requirements.txt

开始工程

scrapy startproject 工程名称

然后工程结构就是这样啦

工程名称/
    scrapy.cfg

    工程名称/
        __init__.py

        items.py

        pipelines.py

        settings.py

        spiders/
            __init__.py
            ...

先看一下结构:

  • items 是我们需要爬取数据的结构描述, 不用着急,后面会讲到

  • pipelines 是一个数据管道, 所有 spiders 抓取的数据都会通过 pipelines 中的某一个或某几个对象中溜出去, 具体经过那一个就看你 settings 中怎么配置啦.

  • settings 所有参数设置都在里面,最好你的配置信息也在放在里面

  • spiders 爬虫文件夹, 在里面编写各种爬虫,可怕吗????

小爬虫试试手 first_spider

# -*- coding: utf-8 -*-
import scrapy


class FirstSpider(scrapy.Spider):
    '''
    第一个爬虫
    '''
    name = 'jys_seg'
    allowed_domains = ['domain']
    start_urls = ['http://domain:port/mweb/index.php']

    def parse(self, response):
        # 筛选中间表格内容, 用这些表格逐条爬取
        # print(os.getcwd())
        segs = response.xpath('//div[@class="mui-media-body"]/text()').extract()
        for seg in segs:
            print(seg)

这个小玩意一点点代码,应该可以看懂吧, 解释一下:

  • name 爬虫名称,这个很重要, 运行爬虫的时候用
  • allowed_domains 允许访问域名
  • start_urls 爬虫开始的 url
  • parse 解析函数, 这个函数名不是瞎起的,根据 scrapy 的指导,访问完连接之后就进入了这个函数

启动: scrapy crawl jys_seg 最后一个参数是里面的 name

然后就可以看到输出爬取的信息了.

response.xpath 这里是 lxml 解析了 页面里面的 div 具有 ui-media-body class 的 text() 内容, 获取到了我们要的目录.

好了, 我们已经可以使用 scrapy 了, 简单吗? 云里雾里? 后面一点点讲吧

-----下面是 requiremtnes.txt 内容,请根据需要安装----

asn1crypto==0.24.0
attrs==18.2.0
Automat==0.7.0
beautifulsoup4==4.6.3
bs4==0.0.1
certifi==2018.10.15
cffi==1.11.5
chardet==3.0.4
constantly==15.1.0
cryptography==2.3.1
cssselect==1.0.3
hyperlink==18.0.0
idna==2.7
incremental==17.5.0
lxml==4.2.5
mysqlclient==1.3.13
parsel==1.5.1
pyasn1==0.4.4
pyasn1-modules==0.2.2
pycparser==2.19
PyDispatcher==2.0.5
PyHamcrest==1.9.0
pyOpenSSL==18.0.0
queuelib==1.5.0
requests==2.20.0
requests-toolbelt==0.8.0
Scrapy==1.5.1
service-identity==17.0.0
six==1.11.0
SQLAlchemy==1.2.13
Twisted==18.9.0
urllib3==1.24
w3lib==1.19.0
zope.interface==4.6.0