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爬取图片

相关推荐
qq_375872692 天前
14爬虫:scrapy实现翻页爬取
爬虫·scrapy
漫无目的行走的月亮3 天前
基于Python Scrapy的豆瓣Top250电影爬虫程序
爬虫·python·scrapy
猿小猴子10 天前
Python3 爬虫 Scrapy 与 Redis
redis·爬虫·scrapy
黄不逗15 天前
【python系列之scrapy爬虫二】- pycharm中断点调试scrapy
爬虫·python·scrapy
white.tie16 天前
scrapy对接rabbitmq的时候使用post请求
scrapy
猿小猴子17 天前
Scrapy与MongoDB
数据库·scrapy·mongodb
凤枭香17 天前
Python 数据分析用库 获取数据(二)
人工智能·爬虫·python·scrapy
drebander23 天前
爬虫—Scrapy 整合 ChromeDriver 实现动态网页拉取
爬虫·python·scrapy
drebander24 天前
爬虫框架快速入门——Scrapy
爬虫·python·scrapy
猿小猴子25 天前
Python3 爬虫 Scrapy的使用
爬虫·scrapy