IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> scrapy 的入门使用超级详细 -> 正文阅读

[Python知识库]scrapy 的入门使用超级详细

记录一下scrapy的安装和实践操作的流程

?

1.安装

pip install Scrapy

2.创建scrapy项目?

project是蜘蛛名字

scrapy startproject project

3.创建scrapy? ?res.py??蜘蛛文件??

保存在spiders目录下

4.查看是否可正常访问网站

?scrapy shell http://lab.scrapyd.cn

看到response 返回200 说明此网站支持爬虫?

5.命令行测试 dom 元素内容

查找元素:我们要查找文案、作者、标签

可以看到下面的图片中展示了此页面的dom元素结构,所有的文字列表都保存在idmaindiv元素中,我们将其提取出来

// 执行代码
response.xpath('//div[@id="main"]').extract()

?得到以下结果,“”注意“” 这里得出来的是一个数组,为id为main标签下的所有数据

按照此方法 我们就能依次得到文案、作者、标签、页码

// 文案 text  类型str
response.xpath('span[@class="text"]/text()').extract_first()

// 作者 text  类型str
response.xpath('span/small/text()').extract_first()

// 标签 text  类型arr
response.xpath('div/a/text()').extract()

// 页码
response.xpath('//ol[@class="page-navigator"]/li/a'[1].xpath('./@href').extract_first()

6.编写代码

1.items.py

import scrapy

class resItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    # list = response.xpath('//div[@id="main"]/div')

    # 短文 str list[0].xpath('span[@class="text"]/text()').extract_first()
    short =  scrapy.Field()  
    
    # 作者 str list[0].xpath('span/small/text()').extract_first()
    author = scrapy.Field()  
     
    # 标签 arr list[0].xpath('div/a/text()').extract()
    tags = scrapy.Field()  

2.编写spiders目录下的蜘蛛文件 res.py

import scrapy

from tutorial.items import resItem

# 声明页码
pageNum = 0


class itemSpider(scrapy.Spider):
    # 定义spider的名字
    name = 'listSpider'

    # 从哪个页面开始
    start_urls = ['http://lab.scrapyd.cn']

    def parse(self, response):
        # 声明全局变量
        global pageNum

        list = response.xpath('//div[@id="main"]/div')

        for v in list:
            item = resItem()
            # 短文 str
            short = v.xpath(
                'span[@class="text"]/text()').extract_first()
            item['short'] = v.xpath(
                'span[@class="text"]/text()').extract_first()

            # 作者 str
            autor = v.xpath('span/small/text()').extract_first()
            item['author'] = v.xpath('span/small/text()').extract_first()

            # 标签 arr
            tag = (v.xpath('div/a/text()').extract())
            tags = ','.join(tag)
            item['tags'] = ','.join(tag)  # 数组转换为字符串

            fileName = '%s-语录.txt' % autor  # 定义文件名,如:木心-语录.txt

            with open(fileName, "a+") as f:  # 不同人的名言保存在不同的txt文档,“a+”以追加的形式
                f.write(short)
                f.write('\n')  # ‘\n’ 表示换行
                f.write('标签:' + tags)
                f.write('\n-------\n')
                f.close()

            yield item

        pageNum += 1
        if pageNum <= 5:
            # 获取下一页的链接
            new_link = response.xpath(
                '//ol[@class="page-navigator"]/li/a')[pageNum].xpath('./@href').extract_first()
            # 再次请求下一个页面
            yield scrapy.Request(new_link, callback=self.parse, dont_filter=True)
            print('pageNum:', pageNum)

3.编写pipelines.py 文件 (该文件负责将爬取到的信息写入(数据库,设备,控制台等))

class TutorialPipeline:
    
    # 此处的item 就是蜘蛛 yield 的item
    def process_item(self, item, spider):
        
        print('short',item['short'])
        print('author',item['author'])
        print('tags',item['tags'])
        
        # return item

4.修改settings.py文件

?7.执行爬虫操作

进入蜘蛛文件夹下执行命令

scrapy crawl listSpider

得到保存的文件说明成功爬虫

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:20:59  更:2021-10-28 12:23:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:25:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码