Python 爬虫之 Scrapy(带例子)macOS 环境
Python 爬虫之 Scrapy(带例子 macOS 环境)
1、概念
Scrapy是一个Python编写的开源网络爬虫框架,它是一个被设计用于爬取网络数据、提取结构性数据的框架。
Scrapy 使用了Twisted异步网络框架,可以加快我们的下载速度。
官方文档地址:Scrapy
2、工作流程
- 爬虫中起始的url构造成request对象 —> 爬虫中间件 —> 引擎 —> 调度器
- 调度器把request —> 引擎 —> 下载中间件 —> 下载器
- 下载器发送请求,获取response响应 —> 下载中间件 —> 引擎 —> 爬虫中间件 —> 爬虫
- 爬虫提取url地址,组装成request对象 —> 爬虫中间件 —> 引擎 —> 调度器,重复步骤2
- 爬虫提取数据 —> 引擎 —> 管道处理和保存数据
2.1 基本爬虫流程
2.2 基本爬虫模块关系
2.3 Scrapy工作流程
3、Scrapy中每个模块的具体作用
4、实例(美剧天堂最近100更新内容爬取)
4.1 创建工程
cd Desktop # 我习惯项目都放在桌面 Scrapy startproject movie
可在桌面看到带有如下目录的文件夹,那么工程就创建成功了。
4.2 创建爬虫程序
cd movie # 用 cd 先进入 movie 目录 Scrapy genspider meiju meijutt.tv # 创建了一个叫 meiju 的爬虫
查看 spiders 目录可以看到多了一个 meiju.py,就是我们刚创建的爬虫。
4.3 编辑爬虫
- pipelines和items文件,负责将Spider(爬虫)传递过来的数据进行保存。具体保存在哪里,应该看开发者自己的需求。
- middlewares用来定义和实现中间件的功能
- settings 整个项目的配置文件
- spiders/目录下是我们的爬虫文件
4.3.1 meiju.py
import scrapy from movie.items import MovieItem class MeijuSpider(scrapy.Spider): # 继承这个类 name = 'test' # 名字 allowed_domains = ['meijutt.tv'] # 域名 start_urls = ['https://www.meijutt.tv/new100.html'] # 补充完整网址 def parse(self, response): movies = response.xpath('//ul[@class="top-list fn-clear"]/li') # 选中所有的属性class值为"top-list fn-clear"的ul下的li标签内容 for each_movie in movies: item = MovieItem() item['number'] = each_movie.xpath('.//div[@class="lasted-num fn-left"]//text()').extract()[0] # 提取影片序号 item['name'] = each_movie.xpath('.//h5/a//text()').extract()[0] # 提取影片名 item['url'] = each_movie.xpath('.//h5/a/@href').extract()[0] # 提取影片网址 item['time'] = each_movie.xpath('.//div[@class="lasted-time new100time fn-right"]//text()').extract()[0] # 提取影片更新时间 yield item # 一种特殊的循环
4.3.2 items.py
# Define here the models for your scraped items # # See documentation in: # https://docs.scrapy.org/en/latest/topics/items.html import scrapy class MovieItem(scrapy.Item): # define the fields for your item here like: number = scrapy.Field() name = scrapy.Field() url = scrapy.Field() time = scrapy.Field() # pass
4.3.3 设置配置文件 settings.py
添加上这一句:
ITEM_PIPELINES = {'movie.pipelines.MoviePipeline': 100}
4.3.4 设置数据处理脚本 pipelines.py
import json class MoviePipeline(object): def process_item(self, item, spider): return item
4.4 启动爬虫
在爬虫程序 meiju.py 目录下启动终端
Scrapy crawl test # 启动的名字和你前面给他取的名字对应,注意不是文件名!!!也不是函数名!!!
出现如下图所示,就是成功爬取我们需要的内容了
本文作者:Dancing-Pierre
本文链接:https://www.cnblogs.com/wyc-1009/p/17548031.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步