scrapy 爬虫程序一览

前置条件

  1. 成功部署的scrapy环境
  2. 安装pycharm
  3. 可以访问外网的一个代理(如果你的环境可以那么就可以不用了)

创建scrapy工程

-打开控制台窗口
-输入scrapy startproject tutorial,会自动生成一些文件目录结构。像这样子
scrapy目录结构

编写爬虫主程序

-爬虫主程序的功能
爬取网页http://quotes.toscrape.com中所有文章的标题,作者,标签
-编写一个类(名字随意取)继承至scapy.Spider,这里我取名quotesSpider
-为爬虫类定义一个name属性,用于标识该爬虫类是全局惟一的。
-重写 start_requests方法
该方法要实现的功能有:yield 一个scrapy.Request(url,callback)实例。其中url,是要爬取的网页,callback 是解析函数名。我喜欢这种方式,scrapy有快捷方式。
-重写parse方法
该方法要实现的功能:通过response返回对象,获取到自己想到的内容,从而达到爬取数据的功能。具体获取数据方法是通过response 的selector对象
–安整代码

“`python

    #coding:utf-8
    __author__ = 'cong.tang'
    import  scrapy
    class DmozSpider(scrapy.Spider):
    name = "dmoz"
    urls=[
     'http://quotes.toscrape.com',

]
def start_requests(self):
    for url in self.urls:
        yield  scrapy.Request(url,callback=self.parse)

def parse(self, response):
    for quote in response.css("div.quote"):#这里通过css筛选器来创建一个selector
        yield {
            'text':quote.css('span.text::text').extract_first(),#导出selector对象中的第一个内容
            'author':quote.css('small.author::text').extract_first(),
            'tags':quote.css("div.tags a.tag::text").extract()#导出selector中的所有内容
        }
        next_page = response.css('li.next a::attr(href)').extract_first()#查看下一个文章的url

        # if next_page is not None:
        #     next_page  = response.urljoin(next_page)
        #
        #     yield  scrapy.Request(next_page,callback=self.parse)
        # if next_page is not None:
        #     yield  response.follow(next_page,callback=self.parse)
        #自动对下一个url进行抓取,前题是文章的格式是一样的
        for a in response.css('li.next a'):
            yield response.follow(a, callback=self.parse)

“`

运行爬虫程序

-打开命立行执行 scrapy crawl dmoz(spider类中的定义的名字) -o output.json(生成一个json文件)
-查看运行结果如下
scrapy 输出结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值