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

相关推荐
q5673152313 小时前
使用Scrapy库结合Kotlin编写爬虫程序
爬虫·scrapy·kotlin
小白学大数据13 小时前
Scrapy结合Selenium实现搜索点击爬虫的最佳实践
开发语言·chrome·爬虫·selenium·scrapy
q567315231 天前
利用Ruby的Typhoeus编写爬虫程序
开发语言·爬虫·scrapy·ruby
q567315234 天前
使用Java的HttpClient实现文件下载器
java·开发语言·爬虫·scrapy
q567315235 天前
用Dispatch库的爬虫程序爬取图片网站
开发语言·爬虫·python·scrapy
q567315235 天前
使用Alamofire下载网站首页内容
开发语言·爬虫·python·scrapy·golang
猿小猴子9 天前
使用Scrapy官方开发的爬虫部署、运行、管理工具:Scrapyd
爬虫·scrapy
叫我王富贵i12 天前
0基础入门scrapy 框架,获取豆瓣top250存入mysql
爬虫·python·scrapy
九月镇灵将12 天前
6.git项目实现变更拉取与上传
git·python·scrapy·scrapyd·gitpython·gerapy
小白学大数据18 天前
Scrapy结合Selenium实现滚动翻页数据采集
爬虫·selenium·测试工具·scrapy