在 PyCharm 中开发、调试 Scrapy 应用

Scrapy 可能是用得最广泛的爬虫框架了。安装 Scrapy 后,可以通过其自带的命令行完成新建项目,项目构件,运行项目等功能。但 PyCharm IDE 在 Python 编码、调试方面更有优势,因此我们也希望能在 PyCharm 中完成 Scrapy 的开发和调试。

本文使用的是 PyCharm 的社区版本(Community),该版本是免费的,可以从官网下载。Python 使用的是 Python 3.8 版。 案例使用了官方的入门案例

安装 Scrapy

为简单起见,我们选择全局安装 Scrapy。 执行:

1
pip install scrapy

安装完成后,可执行:

1
scrapy version

系统显示安装的版本,在我这里显示的是:

1
Scrapy 2.0.1

使用 PyCharm 新建一个项目

启动 PyCharm, 选择新建一个项目,命名为: tutorial。 注意:在 Create Project 对话框中,展开 Project Interpreter: New Virtualenv environment 选择,勾选 Inherit global site-package 如图:

new-scrapy-project

初始化 scrapy 项目

在 PyCharm 中,打开 Terminal, 这个时候,你处在 tutorail 项目的根目录中, 可以看到以 “(venv)” 为先导的提示符, 现在执行:

1
scrapy startproject tutorial

scrapy 将在项目目录中根据模板建立 scrapy 应用项目的框架。完成以后,会生成类似以下的目录和文件:

1
2
3
4
5
6
7
8
9
10
11
+ tutorail 
+ tutorial
+ spiders
__init__.py
__init__.py
items.py
middlewares.py
pipelines.py
settings.py
+ venv
scrapy.cfg

其中,第一个 tutorial 是项目的根目录,其它的所有文件及目录都在该目录之下。 venv 是 PyCharm 建立项目时自动建立的虚拟环境目录,用来存放项目引用的其它第三方库。

新建一个 Spider

在生成的项目中,选择 tutorial 中的 spiders 文件夹,然后新建一个名为: quotes_spider.py 的文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import scrapy

class QuotesSpider(scrapy.Spider):
name = "quotes"

def start_requests(self):
urls = [
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
for url in urls:
yield scrapy.Request(url = url, callback=self.parse)

def parse(self, resp):
page = resp.url.split("/")[-2]
filename = 'quotes-%s.html' % page
with open(filename, 'wb') as f:
f.write(resp.body)
self.log('Saved file %s', filename)

新建一个启动程序

因为 scrapy 本身也是用 Python 写成的,我们可以非常方便的在自己的程序中调用 scrapy 的启动 API, 在项目的根目录中新建一个名为: main.py 的文件,

1
2
3
4
5
+ tutorail 
+ tutorial
+ venv
main.py
scrapy.cfg

内容如下:

1
2
3
4
import scrapy
from scrapy.cmdline import execute

execute(['scrapy', 'crawl', 'quotes'])

建立项目启动配置

在 PyCharm 右上角,选择 “Edit Configuration”, 在弹出框中选择上一步新建的 main.py, 如图:

new-scrapy-project

完成上述步骤以后,就可以向普通 Python 项目那样,在项目中任意 Python 文件中设置断点进行调试,开发起来比较方便。

本文标题:在 PyCharm 中开发、调试 Scrapy 应用

文章作者:晨星

发布时间:2020年03月26日 - 09:03

最后更新:2020年05月28日 - 16:05

原始链接:https://www.mls-tech.info/python/python-debug-scrapy-in-pycharm/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。