VirtualBox CentOS7.7.1908 Python3.8 搭建Scrapy开发环境【图文教程】

VirtualBox CentOS7.7.1908 Python3.8 搭建Scrapy开发环境【图文教程】

本教程将介绍如何在VirtualBox虚拟机上安装CentOS 7.7.1908系统,以及如何安装Python3.8和Scrapy框架来搭建开发环境。

步骤一:安装VirtualBox

首先下载并安装VirtualBox软件,可以从官方网站(https://www.virtualbox.org/wiki/Downloads)下载适合自己操作系统的版本。

步骤二:下载CentOS 7.7.1908 ISO

从CentOS官网(https://www.centos.org/download/)下载最新版本的CentOS 7.7.1908 ISO镜像文件。

步骤三:创建虚拟机

打开VirtualBox软件,点击“新建”创建一个新的虚拟机,设置虚拟机的名称、类型、版本以及内存大小等选项,然后在硬盘选项中选择“创建虚拟硬盘”并设置容量大小。

接着进入虚拟机设置页面,选择“存储”,点击“添加光驱”并选择刚刚下载的CentOS 7.7.1908 ISO镜像文件,然后点击“启动”进入虚拟机。

步骤四:安装CentOS 7.7.1908系统

在虚拟机启动后,会出现CentOS安装界面,按照提示进行安装,可以选择“基本服务器”或“GNOME桌面”等安装选项。

安装完成后,重启虚拟机,并用root账号登录系统。

步骤五:安装Python3.8

在CentOS系统中安装Python3.8之前需要安装一些开发工具,如gcc、make、openssl-devel等,可以使用以下命令进行安装。

sudo yum -y groupinstall "Development Tools"
sudo yum -y install openssl-devel

接着下载并安装Python3.8,可以通过以下命令进行安装。

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
tar -zxvf Python-3.8.0.tgz
cd Python-3.8.0
./configure --prefix=/usr/local/python3
make && make install

安装完成后,可以通过以下命令检查Python版本。

/usr/local/python3/bin/python3.8 -V

步骤六:安装Scrapy框架

在安装Scrapy框架之前,需要安装一些依赖库,如libxml、libxslt等,可以使用以下命令进行安装。

sudo yum -y install libxml2-devel libxslt-devel

接着安装Scrapy框架,可以通过以下命令进行安装。

/usr/local/python3/bin/pip3.8 install scrapy

安装完成后,可以使用以下命令检查Scrapy版本。

/usr/local/python3/bin/scrapy version

示例一:使用Scrapy抓取网页

在安装完Scrapy框架后,可以使用以下命令创建一个新的Scrapy项目。

/usr/local/python3/bin/scrapy startproject myproject

创建完成后,进入myproject目录,使用以下命令创建一个新的Spider。

cd myproject
/usr/local/python3/bin/scrapy genspider example example.com

创建完成后,在example/spiders目录下会生成一个名为example.py的文件。

使用以下代码替换example.py文件中的内容,以抓取百度首页并输出网页标题为例。

import scrapy

class ExampleSpider(scrapy.Spider):
    name = 'example'
    allowed_domains = ['www.baidu.com']
    start_urls = ['http://www.baidu.com/']

    def parse(self, response):
        title = response.css('title::text').get()
        print(title)

接着在命令行中使用以下命令启动Spider并抓取网页。

cd myproject
/usr/local/python3/bin/scrapy crawl example

抓取完成后,会在命令行中输出网页标题。

示例二:使用Scrapy抓取动态网页

除了抓取静态网页外,Scrapy还可以抓取动态网页,例如使用Ajax加载内容的网页。

以抓取豆瓣电影TOP250为例,首先可以使用以下代码创建一个新的Spider。

import scrapy

class DoubanSpider(scrapy.Spider):
    name = "douban"
    start_urls = [
        'https://movie.douban.com/top250',
    ]

    def parse(self, response):
        for href in response.css('div.hd a::attr(href)'):
            yield response.follow(href, self.parse_movie)

        for href in response.css('span.next a::attr(href)'):
            yield response.follow(href, self.parse)

    def parse_movie(self, response):
        yield {
            'title': response.css('h1 span::text').get(),
        }

该Spider会获取豆瓣电影TOP250列表中每个电影的详情页URL,并跟进链接抓取电影标题。需要注意的是,豆瓣电影TOP250使用Ajax加载分页内容,需要在请求头中添加referer字段才能正常获取页面。

在Spider中添加一行代码。

yield scrapy.Request(url=self.start_urls[0], callback=self.parse, headers={'Referer': 'https://movie.douban.com/'})

接着在命令行中使用以下命令启动Spider并抓取网页。

cd myproject
/usr/local/python3/bin/scrapy crawl douban -o movies.json

抓取完成后,会在当前目录下生成一个名为“movies.json”的JSON文件。

以上两个示例分别演示了如何使用Scrapy抓取静态网页和动态网页,并输出结果到命令行或JSON文件中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:VirtualBox CentOS7.7.1908 Python3.8 搭建Scrapy开发环境【图文教程】 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • mysql杀进程脚本

    mysql>kill thread_id; kill掉第一个锁表的进程, 依然没有改善. 既然不改善, 咱们就想办法将所有锁表的进程kill掉吧, 简单的脚本如下. #!/bin/bashmysql -u root -e “show processlist” | grep -i “Locked” >> locked_log.txt for …

    MySQL 2023年4月12日
    00
  • DB2编程序技巧 (八)

    DB2编程技巧第八篇,讲述了如何在多个查询之间共享临时表。这个技巧可以提高数据库的性能,在复杂查询时有效降低查询时间和资源消耗。全文分为以下几个部分: 1. 什么是临时表? 在DB2数据库中,临时表是一个可在内存中和/或磁盘上创建的表,它存在于会话期间或直到连接关闭。临时表适合存储临时数据,如子查询的结果集、中间结果集或其他临时数据。临时表的好处是,它们只能…

    database 2023年5月19日
    00
  • 无法加载 DLL xpstar90.dll 的解决办法

    问题描述: 当使用 SQL Server 2005 Management Studio 连接 SQL Server 2005 实例时,可能会出现以下错误提示: “无法加载 DLL xpstar90.dll 找不到指定的模块。” 此错误提示表示 SQL Server 2005 Management Studio 试图加载一个名为 xpstar90.dll 的 …

    database 2023年5月21日
    00
  • MyBatis-Plus结合Layui实现分页方法

    下面我将详细讲解“MyBatis-Plus结合Layui实现分页方法”的完整攻略,步骤如下: 1. 添加MyBatis-Plus和Layui相关依赖 在pom.xml文件中,添加以下两个依赖: <!– 添加MyBatis-Plus依赖 –> <dependency> <groupId>com.baomidou</…

    database 2023年5月21日
    00
  • MySQL复制之GTID复制的具体使用

    当我们在MySQL数据库中使用GTID复制时,可以使用以下步骤: 1. 确认主服务器上gtid_mode已经配置为ON 在主服务器上执行以下语句可以确认gtid_mode已经被开启: SHOW VARIABLES LIKE ‘gtid_mode’; 如果gtid_mode值为OFF,则需要更新MySQL配置文件,将以下行添加到MySQL配置文件中: [mys…

    database 2023年5月22日
    00
  • mysql下载与安装过程详解

    接下来我将为你提供完整的MySQL下载和安装攻略,并且给出两条示例说明。 下载MySQL 首先,进入MySQL官方网站:https://dev.mysql.com/downloads/mysql/ 在网页中找到“MySQL Community(GPL) Downloads”,点击进入 在“MySQL Community Server”下找到合适的版本进行下载…

    database 2023年5月18日
    00
  • Oracle 12CR2查询转换教程之临时表转换详解

    Oracle 12CR2查询转换教程之临时表转换详解 什么是临时表 临时表是一种用于存放在一定时间内需要临时保存的数据的表,它不同于普通表,其数据的生命周期只在当前的会话中,当会话结束时,表中的数据也随之消失。在Oracle中,临时表是通过创建全局临时表或本地临时表来实现的,其中本地临时表只能用于存储会话私有的数据,而全局临时表可以被多个会话共享。 临时表的…

    database 2023年5月21日
    00
  • 《1—关于解决MySQL在控制台插入中文乱码问题》

    说明:以下所有操作都是基于我个人的电脑及示例,读者可以参考我这个解决过程,去解决自己的问题,如有其它疑问,欢迎留言交流。 首先来看看我遇到的问题: 【1】查看数据库: 【2】使用test数据库: 【3】查看test数据库中有哪些表: 【4】查看student_table2表中的字段内容: 【5】向student_table2表中插入一条记录: 可以看到插入失…

    MySQL 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部