python Scrapy2古诗爬取

python Scrapy2古诗爬取

python Scrapy2古诗爬取_第1张图片
python Scrapy2古诗爬取_第2张图片

setting配置

python Scrapy2古诗爬取_第3张图片
python Scrapy2古诗爬取_第4张图片
在这里插入图片描述

页面分析

在这里插入图片描述

python Scrapy2古诗爬取_第5张图片
python Scrapy2古诗爬取_第6张图片
python Scrapy2古诗爬取_第7张图片

数据分析

python Scrapy2古诗爬取_第8张图片
在这里插入图片描述
python Scrapy2古诗爬取_第9张图片
python Scrapy2古诗爬取_第10张图片
python Scrapy2古诗爬取_第11张图片
python Scrapy2古诗爬取_第12张图片
python Scrapy2古诗爬取_第13张图片
在这里插入图片描述

实现步骤

python Scrapy2古诗爬取_第14张图片

在start文件运行

python Scrapy2古诗爬取_第15张图片

结果:

python Scrapy2古诗爬取_第16张图片

获取内容

python Scrapy2古诗爬取_第17张图片
python Scrapy2古诗爬取_第18张图片

解决方法:’’.join().strip(),strip是把列表转为字符串,’‘是把不同诗句换成’'连接

python Scrapy2古诗爬取_第19张图片

item文件的应用——数据封装

python Scrapy2古诗爬取_第20张图片
python Scrapy2古诗爬取_第21张图片

要先导入

在这里插入图片描述

item字典方式一:

python Scrapy2古诗爬取_第22张图片

item字典方式二:

在这里插入图片描述
python Scrapy2古诗爬取_第23张图片

pipline文件:

python Scrapy2古诗爬取_第24张图片

在start运行

python Scrapy2古诗爬取_第25张图片

保存数据

python Scrapy2古诗爬取_第26张图片

结果是这样:

python Scrapy2古诗爬取_第27张图片

解决方法:ensure_ascii=False——他可以识别英文,所以要设置False就可以识别中文

python Scrapy2古诗爬取_第28张图片
python Scrapy2古诗爬取_第29张图片

piplines文件代码

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter
import json
import csv


class GushiwenPipeline:
    # 在这里保存
    def open_spider(self, spider):
        # self.f = open('gsw.csv', 'w', encoding='utf-8', newline='')
        self.f = open('gsw.txt', 'w', encoding='utf-8', newline='')

    def process_item(self, item, spider):
        # 这里的item是对象,是item =GushiwenItem()的实例化对象,不用str()用json
        # {'author': '王建',
        # 'content': '精卫谁教尔填海,海边石子青磊磊。但得海水作枯池,海中鱼龙何所为?口穿岂为空衔石,山中草木无全枝。朝在树头暮海里,飞多羽折时堕水。高山未尽海未平,愿我身死子还生!',
        # 'dynasty': '〔唐代〕',
        # 'title': '精卫词'}
        # 这里是要把item的类型(不是字典是对象)变成json类型,是用dumps,因为是实例化对象,要用dict包裹
        item_json = json.dumps(dict(item), ensure_ascii=False)
        # headers = ('author', 'content', 'dynasty', 'title')
        # self.f.write(str(headers))
        self.f.write(item_json + '\n')

        # self.writer = csv.writer(self.f)
        # self.writer.writerow(headers)
        # self.writer.writerow(item_json + '\n')
        # prin('*'*10)
        # print(item)
        # print('*' * 10)
        return item

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

翻页逻辑

python Scrapy2古诗爬取_第30张图片
python Scrapy2古诗爬取_第31张图片

要补全这个

在这里插入图片描述

找下一頁的xpath

python Scrapy2古诗爬取_第32张图片
python Scrapy2古诗爬取_第33张图片
python Scrapy2古诗爬取_第34张图片

最终代码逻辑

python Scrapy2古诗爬取_第35张图片
python Scrapy2古诗爬取_第36张图片
python Scrapy2古诗爬取_第37张图片
在这里插入图片描述
python Scrapy2古诗爬取_第38张图片

你可能感兴趣的:(python爬虫笔记,python报错信息搜集,python)