zzy
0-Scrapy

0-Scrapy

环境搭建

安装 scrapy

1
pip install scrapy

安装依赖

1
pip install pywin32

windows需要安装, mac/linux无需安装

创建项目

命令

1
scrapy startproject <项目名称>

项目结构

  • ./projectname/
    • /projectname/
      • __init__.py
      • /__pycache__/
      • items.py:预计要爬取的内容
      • middlewares.py: 自定义中间件
      • piplines.py: 管道 保存数据
      • setting.py:设置文件 UserAgent 启动管道
      • /spiders/: 自定义的 spider 的文件夹
        • __init__.py
        • /__pycache__/
    • scrapy.cfg: 项目配置文件

创建爬虫

命令

  1. 进入目录

    1
    cd  <projectname>
  2. 创建爬虫

    1
    scrapy genspider example example.com

    例如

    1
    scrapy genspider lianjia lianjia.com
    • 此时 lianjia.py 创建在了 spiders 目录(见 创建项目-项目结构

    • 该文件用于数据解析以及翻页等逻辑处理

文件介绍

此后都以 lianajia.com 为例

  1. lianjia.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import scrapy

    class LianjiaSpider(scrapy.Spider):
    name = 'lianjia'
    allowed_domains = ['lianjia.com']
    start_urls = ['http://lianjia.com/']

    def parse(self, response):
    pass
  2. 参数说明

    • name: 爬虫名字
    • allowed_domains: 域名范围
    • start_urls: 爬虫起始 url
    • response: 起始的响应体

运行爬虫

命令行

  1. 在命令行运行爬虫

    1
    scrapy crawl <spidername>
  2. 不带日志运行爬虫

    1
    scrapy crawl <spidername> --nolog

启动文件

  1. 创建启动文件 例如 ./myspider/myspider/start.py

    1
    2
    from scrapy import cmdline
    cmdline.execute(['scrapy', 'crawl', 'lianjia'])

爬虫设置

settings.py

  1. robotstxt

    1
    2
    # Obey robots.txt rules
    ROBOTSTXT_OBEY = True

    注释

    1
    2
    # Obey robots.txt rules
    # ROBOTSTXT_OBEY = True
  2. user-agent

    1
    2
    # Crawl responsibly by identifying yourself (and your website) on the user-agent
    # USER_AGENT = 'rd (+http://www.yourdomain.com)'

    USER_AGENT 取消注释, 改为自己的代理

    1
    2
    # Crawl responsibly by identifying yourself (and your website) on the user-agent
    USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36'

解析数据

  1.  
     
     
     
     
    

操作技巧

相应对象 response

本文作者:zzy
本文链接:http://周梓煜.com/2025/03/18/0-scrapy/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可