Scrapy的下载安装与简单使用

本文介绍了Scrapy,一个强大的Python爬虫框架,包括它的安装过程、创建项目、编写爬虫文件、数据解析和持久化存储的方法。通过实例展示了如何手动请求发送实现全站数据爬取。
摘要由CSDN通过智能技术生成

一.什么是Scrapy?

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍。
所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)
的具有很强通用性的项目模板。对于框架的学习,重点是要学习其框架的特性、各个功能的用法即可。

二.安装

Linux:

  pip3 install scrapy

Windows:

  a. pip3 install wheel

  b. 下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

  c. 进入下载目录,执行 pip3 install Twisted‑17.1.0‑cp35‑cp35m‑win_amd64.whl(更具情况选择具体版本)
    - 注意:必须保证安装成功。安装失败,可以换另一个版本的twisted文件再次进行安装

  d. pip3 install pywin32

  e. pip3 install scrapy
  • 检测环境是否安装成功:
    • 终端中:scrapy
      ![安装成功显示如下图:]
      在这里插入图片描述
      三.基本使用
    • 创建一个项目
      • scrapy startproject proName
        -项目目录下的两个文件表示的含义:
        • spiders包:爬虫文件夹
          • 必须在爬虫文件夹中创建一个爬虫源文件
        • settings.py:配置文件
    • cd proName
    • 创建一个爬虫文件(爬虫文件要创建在spiders包中)
      • scrapy genspider spiderName www.xxx.com
      • 爬虫文件可以使用上述指令创建多个
        一个爬虫项目的目录如下所示:
        在这里插入图片描述
    • 编写爬虫文件
    • 执行项目
      • scrapy crawl spiderName

四.爬虫文件的编写
- 定义好了一个类,该类的父类是Spider,Spider是scrapy所有类的父类
- 类中定义好了三个属性和一个方法
- duan.py

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

from duanzi.items import DuanziItem

class DuanziSpider(scrapy.Spider):
    name = 'duanzi'
    # allowed_domains = ['www.xxx.com']
    start_urls = ['https://ishuo.cn/xiaozhishi']
    - name:爬虫文件的名称
    - start_urls:起始url列表
        - 作用:可以对列表中的url进行get请求的发送
    - allow_demains:允许的域名,注释掉即可。
    - parse(self,response):
        - 将起始url列表中的url请求成功后,response就是获取的响应对象,
            在该方法中负责实现数据解析
- scrapy工程默认是遵从rotbos协议的,需要在配置文件中进行操作:
    - 不遵从robots协议
    - 指定日志等级
        - LOG_LEVEL = 'ERROR'

五.数据解析
duan.py

    # 数据解析操作
    def parse(self, response):
        # 数据解析,段子标题:内容
        li_list = response.xpath('//*[@id="list"]/ul/li')
        for li in li_list:
            # 不是字符串,而是selector对象,提取的字符串数据被存储在该对象中
            # content = li.xpath('./div[1]/text()')[0]
            # 返回的是selector中存储的字符串数据
            content = li.xpath('./div[1]/text()')[0].extract()

            # extract_first()将列表中第0个元素进行数据提取
#             content = li.xpath('./div[1]/text()').extract_first()

            title = li.xpath('./div[2]/a/text()')[0].extract()

            # extract()将列表中每一个列表元素表示的selector对象中的字符串取出
            tag = li.xpath('./div[2]/span//text()').extract() # 返回的是列表,列表中有多个元素
            tag = ''.join(tag) # 将列表转为字符串
            print('内容:',content)
            print('标题:',title)
            print('标签:',tag)
            
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值