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技术站