scrapy爬虫框架记录语句

本文介绍了Scrapy框架的基本操作,包括新建项目、执行爬虫、创建爬虫文件、查看可用爬虫、定义管道和items、以及如何在shell中进行模拟请求和数据提取。讲解了Spider类的基础知识,并提到了Scrapy支持的xpath、css和正则表达式等数据提取方法。
摘要由CSDN通过智能技术生成
.extract()将xpath对象转换为Unicode字符串

scrapy startproject XXX 新建一个scrapy爬虫文件

scrapy crawl  XXX 执行scrapy 项目爬虫

scrapy genspider xxx "http://www.baidu.com/" 新建一个爬虫执行文件

scrapy list 查询当前可以执行的爬虫文件清单

 

管道文件写法(pipelines.py)

import json


class LspidersPipeline(object):
    def __init__(self):  # 类初始化方法
        self.f = open("itcast_pipeline.txt", 'w', encoding="utf-8")  # 只执行一次的初始化方法
        print("初始化)))))))))))))))))))))")

    # item 有爬虫返回到这里的
    def process_item(self, item, spider):  # 帮我们处理每一个item
        content = json.dumps(dict(item), ensure_ascii=False) + ',\n'  # 后面一个参数表示中文会按照unicode形式
        self.f.write(content)
        print("***********************")
        return item  # 将item返回给引擎,告知引擎处理完毕,可以接受下一个item

    def close_spider(self, spider):
        self.f.close()

itmes写法:

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html

import scrapy


# 管道文件
# item定义结构化数据字段,用来保存爬取到的数据,有点像python中的dict,但是提供了一些额外的保护减少错误
# 可以通过创建一个scrapy.item类,并且定义类型为scrapy.Field的类属性来定义一个item(可以理解为类似于ORM映射关系)

class LspidersItem(scrapy.Item):
    # 老师姓名
    name = scrapy.Field()
    # 老师职称
    title = scrapy.Field()
    # 老师信息
    info = scrapy.Field()

爬虫执行文件处理

# -*- coding: utf-8 -*-
import scrapy
from Lspiders.items import LspidersItem


class ItcastSpider(scrapy.Spider):
    name = 'itcast'  # 爬虫名 启动爬虫时需要的参数
    # 爬取域的范围,只允许爬虫在这个域名下进行爬取
    allowed_domains = ['http://www.itcast.cn']  # 可选参数
    # 起始url列表,爬虫执行后第一批请求,将从这个列表里获取
    start_urls = ['http://www.itcast.cn/channel/teacher.shtml#ajavaee']

    def parse(self, response):
        node_list = response.xpath("//div[@class='li_txt']")
        for node in node_list:
            item = LspidersItem()  # 创建item字段对象,用来存储信息
            # .extract()将xpath对象转换为Unicode字符串
            name = node.xpath("./h3/text()").extract()
            title = node.xpath("./h4/text()").extract()
            info = node.xpath("./p/text()").extract()
            item['name'] = name[0]
            item['title'] = title[0]
            item['info'] = info[0]
            # 返回提取到的每一个item数据,给管道文件处理,同时还会回来继续执行后面的for中的代码
            yield item  # 类似于return,但是会执行后面的语句 提交给引擎,引擎转交给管道文件处理

scrapy shell "http://www.itcast.cn/channel/teacher.shtml"可以进行模拟请求,和requests库中的get方法类似

如若有响应,则可以进行如下操作:

scrapy提供使用xpath,css ,re(正则表达式)三种提取数据的方法

Spider类

class scrapy.Spider 是最基础的类,所有的爬虫必须继承这个类。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值