8章:scrapy框架

文章目录

scrapy框架

如何学习框架?

专门学习框架封装的各种功能的详细用法。

什么是scarpy?

是爬虫中封装好的一个明星框架,功能:高性能的持久化存储,异步的数据下载,高性能的数据解析,分布式。

scrapy的使用步骤

1.先转到想创建工程的目录下:cd ...

2.创建一个工程

复制代码
scrapy startproject 工程名  (XXPro:XXproject)

3.创建之后要转到工程目录下

复制代码
cd 工程名

4.在spiders子目录中创建一个爬虫文件

这里不需要切换目录,在项目目录下即可。

www.xxx.com是要爬取的网站。

复制代码
scrapy genspider 爬虫文件名 www.xxx.com

5.执行工程

在pycharm中直接执行是不管用的,无效。应该再在终端中执行

复制代码
scrapy crawl 爬虫文件名				# 执行的是爬虫文件

setting文件中的参数

创建好项目后,在项目的settings.py里更改老多的参数:

python 复制代码
# Obey robots.txt rules
ROBOTSTXT_OBEY = False

#显示指定类型的日志信息 而不显示其他乱七八糟的
LOG_LEVEL = 'ERROR'

# 设置用户代理 浏览器类型
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"

# 取消注释改行,意味着开启管道存储。
# 300表示优先级,数值越小优先级越高	
ITEM_PIPELINES = {
   "weiboPro.pipelines.WeiboproPipeline": 300,
}

scrapy数据解析

爬取B站视频的作者和视频名称

代码为项目下weibo.py的代码。想爬取微博但是失败了,改成爬B站

复制代码
extract()可以将Selector对象中data参数存储的字符串提取出来

对列表调用extract后,将列表的每一个Selector对象中的data对应的字符串提取了出来

将列表转为字符串: .join方法
title = [......]
title = ''.join(title)
python 复制代码
weibo.py  爬虫文件

import scrapy

# 导包失败:右键项目目录 => 将目标标记为 => 源代码根目录

# 爬取微博失败了,返回为空。改为爬取B站了。
# 爬取B站的视频的名称和作者
class WeiboSpider(scrapy.Spider):
    name = "weibo"
    # allowed_domains = ["weibo.com"]
    start_urls = ["https://www.bilibili.com/"]
    def parse(self, response):
        author = []
        title = []
        div_list = response.xpath('//*[@id="i_cecream"]/div[2]/main/div[2]/div/div[1]/div')
        print("数据长度为", len(div_list))
        for div in div_list:
            # xpath返回的是列表,但是列表元素一定是Selector类型的对象
            # extract可以将Selector对象中data参数存储的字符串提取出来
            author=(div.xpath('//div[@class="bili-video-card__info--right"]//a/span[@class="bili-video-card__info--author"]/text()').extract())
            # 对列表调用extract后,将列表的每一个Selector对象中的data对应的字符串提取了出来
            title=(div.xpath('//div[@class="bili-video-card__info--right"]/h3/a/text()').extract())
            # 将列表转为字符串: .join方法
            # title = ''.join(title)
        print(author)
        print(title)
        print(len(author), len(title))

scrapy持久化存储

基于终端指令:

python 复制代码
scrapy crawl weibo -o ./Bzhan.csv       # weibo是爬虫文件名,./Bzhan.csv是保存到本地的路径+文件名
- 要求:只可以将parse方法的返回值存储到本地的文本文件中
- 注意:持久化存储对应的文本文件的类型只可以为:'json', 'jsonlines', 'jl', 'csv', 'xml', 'marshal', 'pickle
- 指令:scrapy crawl xxx -o filePath
- 好处:简介高效便捷
- 缺点:局限性比较强(数据只可以存储到指定后缀的文本文件中)

基于管道持久化存储操作

基于Spider的全站数据爬取

请求传参

scrapy爬取图片

相关推荐
ん贤10 天前
Scrapy 嵌入 FastAPI 的坑:Asyncio/Twisted 桥接 + 代理池设计
python·scrapy·fastapi
龙腾AI白云19 天前
具身智能体的长期任务规划与记忆机制
python·scrapy·plotly·数据挖掘·pyqt
青春不朽51223 天前
Scrapy框架入门指南
python·scrapy
泡泡以安25 天前
Scrapy分布式爬虫调度器架构设计说明
分布式·爬虫·scrapy·调度器
yq1982043011561 个月前
构建高可用资源导航平台:基于Django+Scrapy的分布式架构实践
分布式·scrapy·django
袖清暮雨1 个月前
Python爬虫(Scrapy框架)
开发语言·爬虫·python·scrapy
岱宗夫up1 个月前
Scrapy框架实战教程(上):从入门到实战,搭建你的第一个专业爬虫
爬虫·python·scrapy
B站计算机毕业设计超人1 个月前
计算机毕业设计hadoop+spark+hive在线教育可视化 课程推荐系统 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·人工智能·hive·hadoop·scrapy·spark·课程设计
强化试剂瓶1 个月前
全面掌握Ergosterol-PEG-Biotin,麦角甾醇PEG生物素的使用与注意事项
python·scrapy·flask·scikit-learn·pyqt
深蓝电商API1 个月前
Scrapy 爬虫监控:结合 Prometheus+Grafana 实践
爬虫·python·scrapy