使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站

这篇具有很好参考价值的文章主要介绍了使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站

本次测试案例参考厦门大学数据库实验室
链接: https://dblab.xmu.edu.cn/blog/3937/
在PyCharm中新建一个名称为“scrapyProject”的工程,如下图所示,Python解释器就选择我们之前已经安装好的
本次测试环境为
Python3.7.6
使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站
在“scrapyProject”工程底部打开Terminal窗口(如下图所示),在命令提示符后面输入命令“pip install scrapy”,下载Scrapy框架所需文件。
使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站
下载完成后,继续在终端中输入命令“scrapy startproject poemScrapy”,创建Scrapy爬虫框架相关目录和文件。创建完成以后的具体目录结构如下图所示,这些目录和文件都是由Scrapy框架自动创建的,不需要手动创建。
使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站
在Scrapy爬虫程序目录结构中,各个目录和文件的作用如下:
(1)Spiders目录:该目录下包含爬虫文件,需编码实现爬虫过程;
(2)init.py:为Python模块初始化目录,可以什么都不写,但是必须要有;
(3)items.py:模型文件,存放了需要爬取的字段;
(4)middlewares.py:中间件(爬虫中间件、下载中间件),本案例中不用此文件;
(5)pipelines.py:管道文件,用于配置数据持久化,例如写入数据库;
(6)settings.py:爬虫配置文件;
(7)scrapy.cfg:项目基础设置文件,设置爬虫启用功能等。在本案例中不用此文件

编写代码文件items.py

在items.py中定义字段用于保存数据,items.py的具体代码内容如下:

import scrapy

class PoemscrapyItem(scrapy.Item):
    # 名句
    sentence = scrapy.Field()
    # 出处
    source = scrapy.Field()
    # 全文链接
    url = scrapy.Field()
    # 名句详细信息
    content = scrapy.Field()

编写爬虫软件

在Terminal窗口输入命令“cd poemScrapy”,进入对应的爬虫工程中,再输入命令“scrapy genspider poemSpider gushiwen.cn”,这时,在spiders目录下会出现一个新的Python文件poemSpider.py,该文件就是我们要编写爬虫程序的位置。
使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站
使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站
下面是poemSpider.py的具体代码:

import scrapy
from scrapy import Request
from ..items import PoemscrapyItem


class PoemspiderSpider(scrapy.Spider):
    name = 'poemSpider'  # 用于区别不同的爬虫
    allowed_domains = ['gushiwen.cn']  # 允许访问的域
    start_urls = ['http://so.gushiwen.cn/mingjus/']  # 爬取的地址

    def parse(self, response):
        # 先获每句名句的div
        for box in response.xpath('//*[@id="html"]/body/div[2]/div[1]/div[2]/div'):
            # 获取每句名句的链接
            url = 'https://so.gushiwen.cn' + box.xpath('.//@href').get()
            # 获取每句名句内容
            sentence = box.xpath('.//a[1]/text()').get()
            # 获取每句名句出处
            source = box.xpath('.//a[2]/text()').get()
            # 实例化容器
            item = PoemscrapyItem()
            # 将收集到的信息封装起来
            item['url'] = url
            item['sentence'] = sentence
            item['source'] = source
            # 处理子页
            yield scrapy.Request(url=url, meta={'item': item}, callback=self.parse_detail)
        # 翻页
        next = response.xpath('//a[@class="amore"]/@href').get()
        if next is not None:
            next_url = 'https://so.gushiwen.cn' + next
            # 处理下一页内容
            yield Request(next_url)

    def parse_detail(self, response):
        # 获取名句的详细信息
        item = response.meta['item']
        content_list = response.xpath('//div[@class="contson"]//text()').getall()
        content = "".join(content_list).strip().replace('\n', '').replace('\u3000', '')
        item['content'] = content
        yield item

编写代码文件pipelines.py

当我们成功获取需要的信息后,要对信息进行存储。在Scrapy爬虫框架中,当item被爬虫收集完后,将会被传递到pipelines。现在要将爬取到的数据保存到文本文件中,可以使用的pipelines.py代码:

import json

class PoemscrapyPipeline:
    def __init__(self):
        # 打开文件
        self.file = open('data.txt', 'w', encoding='utf-8')

    def process_item(self, item, spider):
        # 读取item中的数据
        line = json.dumps(dict(item), ensure_ascii=False) + '\n'
        # 写入文件
        self.file.write(line)
        return item

编写代码文件settings.py

settings.py的具体代码如下:

BOT_NAME = 'poemScrapy'

SPIDER_MODULES = ['poemScrapy.spiders']
NEWSPIDER_MODULE = 'poemScrapy.spiders'

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4421.5 Safari/537.36'

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

# 设置日志打印的等级
LOG_LEVEL = 'WARNING'

ITEM_PIPELINES = {
    'poemScrapy.pipelines.PoemscrapyPipeline': 1,
}

运行程序

有两种执行Scrapy爬虫的方法,第一种是在Terminal窗口中输入命令“scrapy crawl poemSpider”,然后回车运行,等待几秒钟后即可完成数据的爬取。第二种是在poemScrapy目录下新建Python文件run.py(run.py应与scrapy.cfg文件在同一层目录下),并输入下面代码:
此处使用run.py的方式

from scrapy import cmdline
cmdline.execute("scrapy crawl poemSpider".split())

之后执行代码就可以看到data.txt爬取文本数据
同级目录下生成的data.txt文件
使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站
爬取数据展示
使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站文章来源地址https://www.toymoban.com/news/detail-502582.html

到了这里,关于使用PyCharm编写Scrapy爬虫程序,爬取古诗词网站的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • scrapy爬虫爬取多网页内容

    摘要 :此案例是爬取目标网站( https://tipdm.com/ )的 新闻中心 板块的 公司新闻 中所有新闻的标题、发布时间、访问量和新闻的文本内容。 我使用的是 Anaconda prompt 我们使用如下命令创建scrapy项目: scrapy startproject spider_name 爬虫路径 spider_name 是项目的名字 爬虫路径 就是项目

    2023年04月21日
    浏览(18)
  • 【爬虫】4.3 Scrapy 爬取与存储数据

    目录 1. 建立 Web 网站 2. 编写数据项目类 3. 编写爬虫程序 MySpider 4. 编写数据管道处理类 5. 设置 Scrapy 的配置文件         从一个网站爬取到数据后,往往要存储数据到数据库中,scrapy 框架有十分方便的存储方法,为了说明这个存储过程,首先建立一个简单的网站,然后写

    2024年02月09日
    浏览(25)
  • 爬虫学习笔记-scrapy爬取电影天堂(双层网址嵌套)

      1.终端运行scrapy startproject movie,创建项目 2.接口查找  3.终端cd到spiders,cd scrapy_carhome/scrapy_movie/spiders,运行 scrapy genspider mv https://dy2018.com/ 4.打开mv,编写代码,爬取电影名和网址 5.用爬取的网址请求,使用meta属性传递name ,callback调用自定义的parse_second 6.导入ScrapyMovieItem,将movie对象

    2024年02月19日
    浏览(22)
  • 网络爬虫丨基于scrapy+mysql爬取博客信息

    本期内容 :基于scrapy+mysql爬取博客信息并保存到数据库中 实验需求 anaconda丨pycharm python3.11.4 scrapy mysql 项目下载地址:https://download.csdn.net/download/m0_68111267/88740730 本次实验实现了:使用Scrapy框架爬取博客专栏的目录信息并保存到MySQL数据库中,实验主要涉及到Python的爬虫技术以

    2024年03月18日
    浏览(32)
  • python爬虫实战 scrapy+selenium爬取动态网页

    最近学习了scrapy爬虫框架,想要找个目标练练手。由于现在很多网页都是动态的,因此还需要配合selenium爬取。本文旨在记录这次学习经历,如有疑问或不当之处,可以在评论区指出,一起学习。 对scrapy不了解的同学可以阅读这篇文章 爬虫框架 Scrapy 详解,对scrapy框架介绍的

    2024年02月07日
    浏览(45)
  • Python爬虫之Scrapy框架系列(23)——分布式爬虫scrapy_redis浅实战【XXTop250部分爬取】

    先用单独一个项目来使用scrapy_redis,讲解一些重要点!

    2024年02月16日
    浏览(25)
  • 网络爬虫丨基于scrapy+mysql爬取博客信息并保存到数据库中

    本期内容 :基于scrapy+mysql爬取博客信息并保存到数据库中 实验需求 anaconda丨pycharm python3.11.4 scrapy mysql 项目下载地址:https://download.csdn.net/download/m0_68111267/88740730 本次实验实现了:使用Scrapy框架爬取博客专栏的目录信息并保存到MySQL数据库中,实验主要涉及到Python的爬虫技术以

    2024年01月17日
    浏览(21)
  • 爬虫学习笔记-scrapy链接提取器爬取读书网链接写入MySQL数据库

    1.终端运行scrapy startproject scrapy_read,创建项目 2.登录读书网,选择国学(随便点一个) 3.复制链接(后面修改为包括其他页)  4.创建爬虫文件,并打开  5.滑倒下方翻页处,右键2,点击检查,查看到a标签网址,复制 6.修改爬虫文件规则allow(正则表达式),\\\'d\\\'表示数字,\\\'+\\\'表示多个,\\\'.\\\'使\\\'.\\\'生效

    2024年02月19日
    浏览(21)
  • Python爬虫之Scrapy框架系列(21)——重写媒体管道类实现保存图片名字自定义及多页爬取

    spider文件中要拿到图片列表并yield item; item里需要定义特殊的字段名:image_urls=scrapy.Field(); settings里设置IMAGES_STORE存储路径,如果路径不存在,系统会帮助我们创建; 使用默认管道则在s

    2024年02月10日
    浏览(24)
  • vscode 编写爬虫爬取王者荣耀壁纸

    网上关于爬虫大部分教程和编辑器用的都不是vscode ,此教程用到了vscode、Python、bs4、requests。 vscode配置Python安装环境可以看看这个大佬的教程 03-vscode安装和配置_哔哩哔哩_bilibili vscode配置爬虫环境可以参考这个大佬的教程【用Vscode实现简单的python爬虫】从安装到配置环境变

    2024年02月04日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包