八 python爬虫之scrapy框架

1 scrapy框架初识

  • 什么是框架?
    所谓的框架简单通用解释就是就是一个具有很强通用性并且集成了很多功能的项目模板,该模板可被应用在不同的项目需求中。也可被视为是一个项目的半成品。
  • 如何学习框架?
    对于刚接触编程或者初级程序员来讲,对于一个新的框架,只需要掌握该框架的作用及其各个功能的使用和应用即可,对于框架的底层实现和原理,在逐步进阶的过程中在慢慢深入即可。
  • 什么是scrapy?
    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍。其内部已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)。对于框架的学习,重点是要学习其框架的特性、各个功能的用法即可

2 scrapy基本使用

  • 环境安装:
    在这里简单说下我的安装方法 我是直接在pycharm中安装scrapy 和twisted 安装成功后需要设置环境变量 将你的Scripts所在的路径放在系统环境变量中 否则无法在pycharm中创建项目
    在这里插入图片描述
    如果在终端中输入scrapy 出现如图所示说明安装成功!
    在这里插入图片描述

3 scrapy使用流程:

  • 创建工程:只能在终端中命令行创建
    scrapy startproject ProName ProName是你自己创建项目的名称
  • 进入工程目录:
    cd ProName
  • 创建爬虫文件:
    scrapy genspider spiderName www.xxx.com
  • 编写相关操作代码
  • 执行工程:
    scrapy crawl spiderName

4 简单小小小案例

  • 爬虫文件
import scrapy
class SpidernameSpider(scrapy.Spider):
    #文件名唯一标识
    name = 'spiderName'i
    #域名 一般不用
    #allowed_domains = ['www.xxx.com']
    #目标网站
    start_urls = ['https://www.baidu.com/']
    #响应数据 response  访问起始URL并获取结果后的回调函数,该函数的response参数就是向起始的url         发送请求后,获取的响应对象.该函数返回值必须为可迭代对象或者NU
    def parse(self, response):
        print(response)
  • 配置文件settings.py修改:
修改内容及其结果如下:
  #19行:
  USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' #伪装请求载体身份
  #22行:
  ROBOTSTXT_OBEY = False  #可以忽略或者不遵守robots协议
  #标识只显示错误日志信息
  LOG_LEVEL = 'ERROR'

案例一 爬取古诗文网 标题 内容
1 创建好工程 目录入如图所示:
在这里插入图片描述
2 开始编写爬虫文件 Gsw.py

import scrapy
from gswPro.items import GswproItem

class GswSpider(scrapy.Spider):
    name = 'Gsw'
    #allowed_domains = ['www.baidu.com']
    #目标网站
    start_urls = ['https://www.gushiwen.cn/default_1.aspx']

    def myprint(self,value):
        print(value)

    def parse(self, response):
        div_list = response.xpath('/html/body/div[2]/div[1]/div[@class="sons"]')
        # print(response.text)
        #self.myprint(div_list)
        for gsw in div_list:
            title = gsw.xpath('./div[1]/p[1]/a/b/text()').get()
            title = str(title)
            # title = gsw.xpath('./div[1]/p[1]/a/b/text()').extract_first()
            #self.myprint(title)
            content = gsw.xpath('./div[1]/div[2]//text()').extract()  #.getall()
            content = ''.join(content)
            # self.myprint(content)
            # 创建item 对象 进行存储爬取数据
            item = GswproItem()
            item['title'] = title
            item['content'] = content

            yield item

3 数据存储
编辑items.py 进行数据封装

import scrapy


class GswproItem(scrapy.Item):

     title = scrapy.Field()  #标题
     content = scrapy.Field()   #内容

封装后将数据交给管道 pipelines.py

from itemadapter import ItemAdapter
class GswproPipeline:
    fp =None
    def open_spider(self,spider):
        print('开始爬取数据')
        self.fp = open('./古诗文.txt','w',encoding='utf-8')
        
    def process_item(self, item, spider):
        title = item['title']
        content = item['content']
        self.fp.write(title+':'+content)
        return item
        
    def close_spider(self,spider):
        self.fp.close()
        print('数据爬取完成!')

注意 配置文件settings.py需要进行修改:

# Obey robots.txt rules
ROBOTSTXT_OBEY = False
LOG_LEVEL = 'ERROR'

ITEM_PIPELINES = {
   'gswPro.pipelines.GswproPipeline': 300,
}
#这个注释要去掉

最后执行工程就可以了:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值