爬虫进阶:Scrapy入门

简介: 进阶前言  学Py和写爬虫都有很长一段时间了,虽然工作方面主要还是做Java开发,但事实上用python写东西真的很爽。之前都是用Requests+BeautifulSoup这样的第三方库爬一些简单的网站,好处简单上手快,坏处也明显,单线程速度慢,偶尔想要跑快点还得自己写多线程或者多进程。

进阶前言

  学Py和写爬虫都有很长一段时间了,虽然工作方面主要还是做Java开发,但事实上用python写东西真的很爽。之前都是用Requests+BeautifulSoup这样的第三方库爬一些简单的网站,好处简单上手快,坏处也明显,单线程速度慢,偶尔想要跑快点还得自己写多线程或者多进程。其实早已久仰Scrpay大名,无奈一直没有主动去接触,前不久买了一本相关的书籍,看完之后便陆陆续续试手了几个实战项目(后续介绍),现在应该算是半梦半醒迈入半个大门了。其实Java也有好几个不错的爬虫框架,那为什么不选择Java?呵呵,人生苦短,用Python没错,何况它现在这么火。

  大多数学习是没有捷径的,如果你也想学Scrapy,根据个人经验,可以先买一两本相关书籍翻翻,然后写写小项目,接着再继续往深入学习,网上有很多不错的关于Scrapy的电子书,文末会推荐一波自己瞎逛已收藏的,可以根据自己的实际情况进行帅选和甄别。

目录结构

  万事开头难,安装好Scrapy环境后输入命令scrapy startproject start,这样就创建好了第一个scrapy项目,目录结构如下:

- start
    - start 
        - spiders # 爬虫编写及存放的目录
            - __init__.py
        - __init__.py
        - items.py # 定义爬虫数据结构的类
        - middlewares.py # 定义一些中间件的类,包括代理、请求头这些
        - pipelines.py # 数据流出的管道类,将爬取数据保存入库等
        - settings.py # 配置相关类,包括像日志、middlewares和pipelines等
    - scrapy.cfg # 主要用于将爬虫部署到第三方,一般可不理会

  项目框架已经搭起来了,紧接着示例下如何第一个爬虫,可以自己在spiders目录下手动创建爬虫类,也可以用scrapy提供的快捷命令scrapy genspider {spider-name} {target-website}快速生成指定名称的目标站点爬虫(参考如下)。例如spider-name可以定义为example,target-website指定为example.com

# -*- coding: utf-8 -*-
import scrapy


class ExampleSpider(scrapy.Spider):
    name = 'example'  # 爬虫名称,运行的时候需指定
    allowed_domains = ['example.com']  # 允许爬取的域名
    start_urls = ['http://example.com/']  # 第一个爬取的目标网址

    def parse(self, response):
        """scrapy爬取完首个目标网页后会回调到这个方法"""

        pass

  更多优秀和详细的Scrapy入门知识应该从书中或者其它学习资源获取,最后再附上Scrapy学习必备的经典架构图:

img_8025f19a52f8c14c48c5d7b170acd644.jpe
Scrapy经典架构图

常见命令

  这里记录和列举一些常用的scrapy命令及其作用:

命令 作用 可选参数
scrapy startproject {project-name} 创建scrapy项目
scrapy genspider {spider-name} {target-domain} 创建目标站点指定名称爬虫
scrapy shell {url} 调试抓取的指定网页 -s USER_AGENT='xxx',加上指定请求头
scrapy crawl {spider-name} 运行指定爬虫 -o output.{json or xml or cvs},将抓取结果输出为指定格式文件保存; -s {CLOSESPIDER_PAGECOUNT or CLOSESPIDER_ITEMCOUNT}=n,抓取指定数量网页或ITEM后自动停止爬虫
scrapy check {spider-name} 检测爬虫是否存在错误

学习资源

参考链接

scrapy命令行工具
Scrapy Documentation
Scrapy 中文文档
示例代码 - GitHub

目录
相关文章
|
9天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
18天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
60 6
|
1月前
|
数据采集 中间件 开发者
Scrapy爬虫框架-自定义中间件
Scrapy爬虫框架-自定义中间件
|
1月前
|
数据采集 中间件 Python
Scrapy爬虫框架-通过Cookies模拟自动登录
Scrapy爬虫框架-通过Cookies模拟自动登录
|
19天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
45 4
|
18天前
|
数据采集 中间件 API
在Scrapy爬虫中应用Crawlera进行反爬虫策略
在Scrapy爬虫中应用Crawlera进行反爬虫策略
|
23天前
|
数据采集 存储 数据库
Python中实现简单爬虫的入门指南
【10月更文挑战第22天】本文将带你进入Python爬虫的世界,从基础概念到实战操作,一步步指导你如何使用Python编写一个简单的网络爬虫。我们将不展示代码示例,而是通过详细的步骤描述和逻辑讲解,帮助你理解爬虫的工作原理和开发过程。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你打开一扇通往数据收集新世界的大门。
|
1月前
|
消息中间件 数据采集 数据库
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
25 1
|
1月前
|
消息中间件 数据采集 数据库
小说爬虫-02 爬取小说详细内容和章节列表 推送至RabbitMQ 消费ACK确认 Scrapy爬取 SQLite
小说爬虫-02 爬取小说详细内容和章节列表 推送至RabbitMQ 消费ACK确认 Scrapy爬取 SQLite
19 1
|
1月前
|
数据采集 监控 中间件
Scrapy入门到放弃03:理解settings配置,监控scrapy引擎|8月更文挑战
Scrapy入门到放弃03:理解settings配置,监控scrapy引擎|8月更文挑战

相关实验场景

更多