scrapy框架

scrapy

简介

scrapy是一个专门用于异步爬虫的框架,框架可以理解为是一个被集成了很多功能且具有很强通用性的一个项目模板。

安装

1 终端输入

pip install scrapy

2 anaconda - environments - base(root) -search packages搜索scrapy下载,回到pycharm中import后直接下载,或是在preference-project interpreter 按+ 搜索后 install package

下载显示成功后在终端输入scrapy,没报错就说明下载成功

基础使用指令

  • 创建
scrapy startproject ProName
scrapy startproject onePick
  • 进入工程
cd ProName
cd onePick
  • 创建爬虫源文件,网址可以创建后修改
    • 在spider中创建爬虫文件,一般情况下只创建1个,name对应的属性值就是该爬虫文件,它是当前源文件的唯一标识
    • 如果在spider中创建多个爬虫文件,name对应的属性值不可相同
scrapy genspider spiderName www.xxx.com
scrapy genspider one www.xxx.com
  • 执行工程
    • 在pycharm中只能使用指令执行,无法通过run 执行
    • 不能同时执行多个爬虫文件,只能是一条指令执行一个
    • 直接进行执行工程后,默认会输出工程的日志信息
scrapy crawl spiderName
scrapy crawl one
  • 在创建爬虫源文件后,可先到settings.py中进行修改:
    • 写入LOG_LEVEL = 'ERROR'
    • 找到ROBOTSTXT_OBEY = True并修改为ROBOTSTXT_OBEY = False
    • 找到UA并写入

在这里插入图片描述

工程下的目录结构

在这里插入图片描述

  • duanziPro(ProName) :创建工程后会生成一个工程同名的文件夹
  • spider :爬虫文件夹,该文件夹必须要存放一个爬虫源文件
  • items.py :可以理解为一种容器,存储爬取的数据
  • pipelines.py :管道类
  • settings.py :工程的配置文件
  • scrapy.cfg:配置文件

数据解析

  • 测试流程

打开终端,进入指定文件夹内 cd 3\ scrapy
创建工程scrapy startproject onePick
进入工程cd onePick
创建爬虫文件scrapy genspider theOne www.xxx.com
打开settings.py,做3步修改
打开theOne.py

import scrapy

# TheoneSpider 文件名+spider作方法名,Spider是它的父类
class TheoneSpider(scrapy.Spider):
    # 爬虫文件的名称:当前源文件的唯一标识
    name = 'theOne'
    # 允许的域名(通常不用)
    # 限定请求发送的URL,如在allowed_domains中指定了单独的域名,无论start_urls中有多少个域名都只能访问属于指定域名之下的URL
    # allowed_domains = ['www.xxx.com']
    # 起始URL列表:只可以存储URL
    # 作用:列表中储存的URL都会被进行get请求的发送,如需要post要重写父类方法
    start_urls = ['https://www.baidu.com/','https://www.sougou.com']

    # 数据解析
    # parse方法调用的次数取决于请求发送的次数(start_urls列表里的URL请求次数)
    # response:表示的是服务器返回的响应对象
    def parse(self, response):
		print(response)

执行工程scrapy crawl theOne


  • scrapy数据解析

使用response.xpath(‘xpath表达式’)
scrapy封装的xpath和etree中的xpath区别:
scrapy中的xpath直接将定位到的标签中存储的值或者属性值取出,返回的是Selector对象,且相关的数据值是存储在Selector对象的data属性中,需要调用extract、extract_first()取出字符串数据

import scrapy
class DuanziSpider(scrapy.Spider):
    name = 'duanzi'
    # allowed_domains = ['www.xxx.com']
    start_urls = ['http://www.duanziku.com/gaoxiaoduanzi/']
# 数据解析
    def parse(self, response):
        paper_list = response.xpath('/html/body/div[5]/div[1]/ul')
        for paper in paper_list:
            # 返回Selector对象,数据存储在对象的data属性中
            title = paper.xpath('./li/h3/a/text()')[0]
            content = paper.xpath('./li/p[2]/text()')[0]

            # .extract() 从Selector对象中取出data属性值,返回字符串
            title = paper.xpath('./li/h3/a/text()')[0].extract()
            content = paper
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值