爬虫实战练习 - 2 - 用Scrapy进行爬取

2019-06-02  本文已影响0人  AllenBigBear

Scrapy是现在应用最为广泛的爬虫框架了,所以我也学习一下基础地使用这个框架。

1:安装及创建环境

安装还是在pycharm下面进行安装
然后用命令scrapy startproject tutorial来进行项目创建
然后,你自己编写的爬虫内容(我这里是quotes_spider),放在spider文件夹下
整个项目内结构如下

文件结构

2:编写程序

import scrapy

class QuotesSpider(scrapy.Spider):
    #name的作用是定义这个爬虫的名字,在命令行执行的时候可以直接用这个名字而不需要执行py文件
    name = 'quotes'
    #这里其实是重写了start_requests方法,不用额外写start_urls了
    def start_requests(self):
        #重写这个函数
        urls =[
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/',
        ]
        #遍历urls里面所有的地址,并通过回调函数来取回爬到的参数
        for url in urls:
            yield scrapy.Request(url=url,callback=self.parse)
    #定义parse函数,定义爬取哪些数据
    def parse(self,response):
        for quote in response.css('div.quote'):
            yield {
                'text':quote.css('span.text::text').extract_first(),
                'author':quote.css('small.author::text').extract_first(),
                'tags':quote.css('div.tags a.tag::text').extract(),
            }

3:运行爬虫

scrapy crawl quotes -o quotes.json
至此,爬取的结果就保存在了quotes.json文件里,内容如图

爬取结果

说实话,为了搞清楚start_requests和parse函数里面的yield原理,起码看了50+的网页。包括了一定量的源码解析,不过还不是特别的清楚,只能说知道了50%。
参考资料如下:
https://www.cnblogs.com/tuohai666/p/8879765.html
http://kaito-kidd.com/tags/%E7%88%AC%E8%99%AB/
https://piaosanlang.gitbooks.io/spiders/09day/scrapyyuan-ma-jie-xi-ff08-si-ff09.html

上一篇下一篇

猜你喜欢

热点阅读