scrapy项目创建

本文介绍了如何在PyCharm中创建和使用Scrapy爬虫项目。从安装Scrapy开始,详细讲解了创建项目、启动爬虫、修改爬虫配置以及中间件、选择器和管道的使用。同时,提到了Scrapy的工作原理和一些高级话题,如分布式爬虫和增量爬虫。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装

使用cmd控制台查看scrapy是否安装,没有就安装完再查看。

>conda list
>conda install scrapy
>conda list

创建项目

使用window powershell控制台,先跳转到pycharm项目地址,然后创建项目hello。
创建完成后进入hello目录确定项目主题为dingdian,完成项目创建。

>cd d:
>cd D:\py-workplace
>scrapy startproject hello
>cd hello
>scrapy genspider dingdian wwwwww

打开pycharm,看到项目hello打开。
在这里插入图片描述

使用项目

安装

在pycharm的控制台也需要安装scrapy

>pip install scrapy

会有安装提示

Installing collected packages: zope.interface, w3lib, twisted-iocpsupport,
pyasn1, lxml, incremental, hyperlink, hyperframe, hpack, cssselect, 
constantly, Automat, Twisted, pyasn1-modules, priority, parsel, jmespath,
itemadapter, h2, service-identity, queuelib, PyDispatcher, protego,
itemloaders, scrapy

原理

爬虫文件在如图dingdian.py文件书写,items.py用于临时存储,middlewares.py中间件,pipelines.py下载管道,settings.py配置文件。
在这里插入图片描述
取自Scrapy工作原理
在这里插入图片描述
Scrapy Engine:Scrapy引擎
Scheduler:调度器
Downloader:下载器
Spider:爬虫
Item Pipeline:存储数据临时点+管道
Downloader Middlewares:下载中间件
Spider Middlewares:爬虫中间件

Spider爬虫url -> Scrapy引擎 -> Scheduler安排任务request -> Scrapy引擎 -> Downloader Middlewares增加header的cookie等 -> Downloader下载返回response ->Downloader Middlewares判断数据是否有效 -> Scrapy引擎 -> Spider分析数据 -> Scrapy引擎 -> Item Pipeline进入数据库/ Scheduler安排新任务request

使用Twisted这个异步网络库来处理网络通讯,提取结构性数据而编写的应用框架

启动

在根目录下建一个文件:hello/run.py

from scrapy.cmdline import execute
execute(['scrapy','crawl','dingdian'])

注意,[]不要丢了,免得报参数错误

TypeError: execute() takes from 0 to 2 positional arguments but 3 were given

或者进入pycharm的控制台先跳转到项目根目录,再执行scrapy crawl dingdian命令

>cd ../hello
>scrapy crawl dingdian

命令:scrapy crawl quotes

爬取

修改dingdian.py的start_urls和print(response.text)。

import scrapy
class DingdianSpider(scrapy.Spider):
    name = 'dingdian'
    allowed_domains = ['wwwwww']
    # 爬取网址
    start_urls = ['https://www.baidu.com/']
    def parse(self, response):
        print(response.text)

start_urls是需要爬取的网址

修改settings.py的一些参数

# 遵守 robots.txt 协议,但是一般不遵守
ROBOTSTXT_OBEY = False

其他参数均注释,需要启动就去掉注释

USER_AGENT = 'hello (+http://www.yourdomain.com)'
CONCURRENT_REQUESTS = 32
#每次下载后延迟3秒
DOWNLOAD_DELAY = 3
CONCURRENT_REQUESTS_PER_DOMAIN = 16
# 单位时间IP最多用多少次,尽量低
CONCURRENT_REQUESTS_PER_IP = 16
COOKIES_ENABLED = False
TELNETCONSOLE_ENABLED = False

# 定义request headers的值,优先作为基础,可以在request headers增加其他部分
DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
}
# 使用爬虫中间件设置,设置后可以使用
SPIDER_MIDDLEWARES = {
   'hello.middlewares.HelloSpiderMiddleware': 543,
}
# 使用下载器中间件设置,设置后可以使用
DOWNLOADER_MIDDLEWARES = {
   'hello.middlewares.HelloDownloaderMiddleware': 543,
}
EXTENSIONS = {
   'scrapy.extensions.telnet.TelnetConsole': None,
}
# 使用临时存储设置,设置后可以使用,可以向数据库存数据
ITEM_PIPELINES = {
   'hello.pipelines.HelloPipeline': 300,
}
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 5
AUTOTHROTTLE_MAX_DELAY = 60
AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
AUTOTHROTTLE_DEBUG = False
HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0
HTTPCACHE_DIR = 'httpcache'
HTTPCACHE_IGNORE_HTTP_CODES = []
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

了解middlewares.py中间件

下载器中间件HelloDownloaderMiddleware
控制 引擎到下载器中间件def process_request(self, request, spider)
控制 下载器中间件到引擎def process_response(self, request, response, spider)
请求卡死等不报错的异常def process_exception(self, request, exception, spider)

爬取

例子:顶点
选择一个小说
在这里插入图片描述
得到://*[@id=“at”]/tbody/tr[1]/td[1]/a
爬取某个小说的每个章节网址

class DingdianSpider(scrapy.Spider):
    name = 'dingdian'
    # 主要防止域名不含wwwww
    allowed_domains = ['wwwwww']
    # 爬取网址
    start_urls = ['http://www.ddxsku.com/files/article/html/13/13332/index.html']
    def parse(self, response):
         urls = response.xpath('//*[@id="at"]//tr/td/a/@href').extract()
         print(urls)

extract()获取所有
extract_first()获取一个

scrapy选择器

css选择器

xpath选择器

管道

修改pipelines.py,入数据库

下载器中间件

cookie

scrapy的cookie

多个项目

scrapy多个项目
使用 scrapy-redis实现分布式爬虫
Scrapy框架的使用之Scrapy通用爬虫
item loader机制
对接docker
crawlab 爬虫管理平台
scrapy 增量爬虫
爬虫 进阶
scrapy 用管道下图片
爬虫常识

scrapy1
scrapy2
scrapy3
scrapy4
scrapy5
scrapy6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值