Python 爬虫 之scrapy 框架

文章目录

常用的命令

Scrapy是一个用于爬取网站数据的Python框架,以下是一些常用的Scrapy命令:

开始的时候 用 cd 进入你想创建scrapy 的文件夹 ,然后开始下面的操作

  1. 创建新的Scrapy项目:

    复制代码
    scrapy startproject project_name

    这个命令会创建一个新的Scrapy项目,其中project_name是你为项目指定的名称。

  2. 创建一个新的Spider:

    复制代码
    scrapy genspider spider_name website_url

    这个命令会生成一个新的Spider文件,你需要提供spider_name作为Spider的名称和website_url作为爬取的起始网址。

  3. 运行Spider:

    复制代码
    scrapy crawl spider_name

    这个命令会启动指定的Spider,开始爬取数据。你需要将spider_name替换为你要运行的Spider的名称。

  4. 导出爬取数据为JSON文件:

    复制代码
    scrapy crawl spider_name -o output.json

    这个命令会运行Spider并将爬取的数据导出为一个JSON文件。你可以将output.json替换为你想要的输出文件名和格式。

  5. 导出爬取数据为CSV文件:

    复制代码
    scrapy crawl spider_name -o output.csv

    这个命令与上面的命令类似,不过它将数据导出为CSV格式。

  6. 查看可用的Spider:

    复制代码
    scrapy list

    这个命令会列出项目中所有可用的Spider,你可以选择其中一个来运行。

  7. 检查Spider的数据爬取情况:

    复制代码
    scrapy crawl spider_name --loglevel=INFO

    这个命令会以INFO级别的日志显示Spider的爬取情况,有助于调试和监视爬取过程。

  8. 检查Spider的爬取速度和性能:

    复制代码
    scrapy crawl spider_name --profile=output.cprofile

    这个命令会生成性能分析文件,你可以使用工具来分析Spider的性能瓶颈。

开始爬虫

请求与响应

python 复制代码
import scrapy


class ExampleSpider(scrapy.Spider):
    name = "example" #爬虫的名字(唯一)
    allowed_domains = ["ssr1.scrape.center"] # 限定的域名,可选
    start_urls = ["https://ssr1.scrape.center/"] #当前的域名

    def parse(self, response): 
    # 当在命令行运行scrapy crawl example 之后会发送请求,得到一个响应对象responce
        print(response.text)
        print(response.status)
        pass

让控制台只输出想要的信息

在你的settings 文件中加入

python 复制代码
LOG_FILE = "爬虫名字.log"

这样,那些日志就只会存储在日志文件中,而不是在控制台中

创建一个py 文件来帮忙运行爬虫

在你的爬虫项目里创建一个py 文件

在你的run 文件中

python 复制代码
from scrapy.cmdline import execute

execute(["scrapy","crawl","example"])
# 对应于你的运行scrapy crawl example
#这样你就可以直接运行run 文件来实现你的结果了

工作原理图

实战

网站https://ssr1.scrape.center/爬取电影名

python 复制代码
import scrapy
from lxml import etree

class ExampleSpider(scrapy.Spider):
    name = "example" #爬虫名字
    allowed_domains = ["ssr1.scrape.center"] #限定的域名(可选)
    start_urls = ["https://ssr1.scrape.center/"]# 起始的域名

    def parse(self, response):
        html = etree.HTML(response.text)#对返回的html 文本进行解析
        allname = html.xpath(r'//h2[@class="m-b-sm"]/text()')# 寻找电影名字
        print(allname)
        pass

效果:

相关推荐
iAm_Ike12 小时前
Go 中自定义类型与基础类型间的显式类型转换详解
jvm·数据库·python
iuvtsrt12 小时前
Golang怎么实现方法集与接口的匹配_Golang如何理解值类型和指针类型实现接口的区别【详解】
jvm·数据库·python
旦莫12 小时前
AI驱动的纯视觉自动化测试:知识库里应该积累什么知识内容
人工智能·python·测试开发·pytest·ai测试
知识领航员13 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
如何原谅奋力过但无声15 小时前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表
deephub15 小时前
2026 RAG 选型指南:Vector、Graph、Vectorless 该怎么挑
人工智能·python·大语言模型·rag
狐狐生风17 小时前
使用 UV 创建并运行 Python 项目(完整步骤)
python·uv
噜噜噜阿鲁~17 小时前
python学习笔记 | 9.2、模块-安装第三方模块
笔记·python·学习
现代野蛮人17 小时前
【深度学习】 —— VGG-16 网络实现猫狗识别
网络·人工智能·python·深度学习·tensorflow
一个小猴子`17 小时前
Pytorch快速复习
人工智能·pytorch·python