scary

scary框架

scary框架是什么呢?

其实就是集成了很多功能且通用性很强的的项目模板

常见的功能有:高性能的持久化存储,异步的数据下载,高性能的数据解析,分布式等等

1.环境准备

mac && linux

pip install scary

windows

# 首先下载wheel模块,用于后续安装twisted模块
pip install wheel

# 下载Twisted【支持异步的数据下载】
pip install Twisted      

# 下载pywin32【并不指定位数,安装的包会根据你当前 Python 的版本和架构(32位或64位)自动选择】
pip install pywin32

# 下载scrapy
pip install scrapy

# 下载成功后,可以终端输入如下命令测试
scrapy version

2.基本使用

1.创建一个scrapy项目

scrapy startproject firstBlood

2.cd到项目目录下,创建爬虫文件

cd firstBlood
scrapy genspider 爬虫文件名 域名     # 域名可以随便写,比如www.xxx.com,后面可以手动修改

eg:scrapy genspider first www.xxx.com

现在,firstBlood项目的目录结构是这样的:

E:\all_homework\crawl\firstBlood  			# 爬虫工程目录
├─scrapy.cfg   				# scrapy配置信息,但真正爬虫相关的配置都在settings.py文件中
│
└─firstBlood   				# 项目目录,目前只关注一个settings文件即可
    ├─  items.py   			# 设置数据存储模板,用于结构化数据
    ├─  middlewares.py  	# 中间件,可以配置关于请求头的修改、ip代理池等
    ├─  pipelines.py    	# 数据的持久化处理
    ├─  settings.py   		# 爬虫配置文件,如递归层数、并发数、延迟下载等
    ├─  __init__.py
    │
    └─spiders  				# 爬虫文件目录,主要编写爬虫主要逻辑
       ├─  first.py  		# 之前通过命令创建的爬虫文件,我们的爬虫代码都编写到这个文件中
       └─ __init__.py

3.编写爬虫文件和配置文件

import scrapy


class FirstDemoSpider(scrapy.Spider):
    # name:first文件在当前项目中的唯一标识
    name = 'first'
    # allowed_domains:允许start_urls中哪些url可以被访问,一般,我们都注释掉这个属性
    # allowed_domains = ['www.baidu.com']
    # 当执行项目时,这个列表中的url将被一一执行,我们手动的添加链接
    start_urls = ['https://www.baidu.com/', 'https://gitee.com/']

    def parse(self, response):
        """  请求结果的数据解析在这个方法中解析 """
        print(f"请求的 URL: {response.url}, 状态码: {response.status}")

4.跑爬虫项目

# 注意,一定要cd进去
cd到爬虫工程目录下

scrapy crawl 爬虫文件

会发现,输出一大堆的日志,如何让其运行时,只输出我们的print信息,而不要其他日志信息

解决方案:

scrapy crawl first --nolog   # 不建议用, 因为如果有报错,也不输出


E:\all_homework\crawl\firstBlood>scrapy crawl first --nolog
请求的 URL: https://gitee.com/, 状态码: 200

发现有bug,我们的first中的start_urls列表中有两个url,但上述结果就一个

解决方案:调整一下settings.py文件

# ROBOTSTXT_OBEY = True  # 默认的遵循爬虫规则,我们这里改为False
ROBOTSTXT_OBEY = False

# 新添加一个参数
# 解决--nolog参数的弊端,这里我们自定义日志输出级别,当程序出错时,输出报错信息
LOG_LEVEL = "ERROR"

重新跑项目就解决了

E:\all_homework\crawl\firstBlood>scrapy crawl first --nolog
请求的 URL: https://www.baidu.com/, 状态码: 200
请求的 URL: https://gitee.com/, 状态码: 200

3.PyCharm配置scrapy运行环境

在项目目录的同级目录,也就是跟scrapy.cfg文件同级,创建一个文件,我用main.py

import os
import sys
from scrapy import cmdline

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
cmdline.execute(['scrapy', "crawl", "first"])  					# first 是爬虫文件

然后进行操作:

然后,就可以点击运行按钮运行了:

posted @ 2024-10-23 23:02  清风拂山岗(小高同学)  阅读(35)  评论(0编辑  收藏  举报