irpas技术客

大数据时代下的Scrapy爬虫框架_右指_大数据爬虫框架

网络 1664

文章目录 前言一、Scrapy是什么?二、使用步骤1.安装Scrapy2.创建Scrapy项目3.Scrapy架构图 三.实战项目:爬取豆瓣电影TOP250电影信息1.items.py2.pipelines.py3.douban_spider.py4.运行结果


前言

随着大数据时代的来临,数据对一个企业越来越重要,没有数据的支撑,那么这个企业必然会落后于其它企业,那么怎么样获取数据呢?本篇文章将告诉你如何从互联网上抓取有用的数据并持久化存储

一、Scrapy是什么?

Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便~

二、使用步骤 1.安装Scrapy pip install scrapy 2.创建Scrapy项目 scrapy startproject 项目名 3.Scrapy架构图

Item Pipeline:可以简称为数据结构,即要存储的数据的结构,可以理解为面向对象中的类,这个模块在Spiders模块解析后,会进行回调。 Spiders:数据解析模块,即在此模块中,只是做对数据的解析,并提取链接信息发送给Scheduler模块进行排队。 Downloader:下载模块,只做数据请求,并将返回的数据放入Spiders中解析。 Scheduler:队列模块,只负责对请求的链接进行排序并发送给Downloader.

三.实战项目:爬取豆瓣电影TOP250电影信息 1.items.py

该模块对应items模块

# Define here the models for your scraped items # # See documentation in: # https://docs.scrapy.org/en/latest/topics/items.html import scrapy class DoubanItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() ##电影序号 movie_number=scrapy.Field() ##电影名字 movie_name=scrapy.Field() ##电影信息 movie_tostar=scrapy.Field() ##星级 movie_star=scrapy.Field() ##评论人数 movie_evaluate=scrapy.Field() ##电影介绍 movie_introduction=scrapy.Field() 2.pipelines.py # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html # useful for handling different item types with a single interface from itemadapter import ItemAdapter import pymongo class DoubanPipeline: def __init__(self) -> None: host="mongodb://localhost" prot="27017" dbname="movie" client=pymongo.MongoClient("mongodb://localhost:27017") db=client[dbname] self.movie_table=db['movie_table'] def process_item(self, item, spider): print(item) data=dict(item) self.movie_table.insert_one(data) return item 3.douban_spider.py import scrapy from douban.items import DoubanItem class DoubanSpiderSpider(scrapy.Spider): ##爬虫名字 name = 'douban_spider' ##允许的域名 allowed_domains = ['movie.douban.com'] ##入口url start_urls = ['https://movie.douban.com/top250'] def parse(self, response): next=response.xpath('//*[@id="content"]/div/div[1]/div[2]/span[3]/a/@href').extract() my_list=response.xpath('//*[@id="content"]/div/div[1]/ol/li') for item in my_list: my_item=DoubanItem() my_item['movie_number']=item.xpath('./div[@class="item"]//em/text()').extract_first() my_item['movie_name']=item.xpath('./div[@class="item"]/div[@class="info"]//a/span[1]/text()').extract_first() my_item['movie_tostar']=item.xpath('./div[@class="item"]/div[@class="info"]//div[@class="bd"]/p/text()').extract_first() my_item['movie_star']=item.xpath('./div[@class="item"]/div[@class="info"]//div[@class="star"]/span[2]/text()').extract_first() my_item['movie_evaluate']=item.xpath('./div[@class="item"]/div[@class="info"]//div[@class="star"]/span[4]/text()').extract_first() my_item['movie_introduction']=item.xpath('./div[@class="item"]/div[@class="info"]//p[@class="quote"]/span[1]/text()').extract_first() yield my_item if next: yield scrapy.Request("https://movie.douban.com/top250"+next[0],self.parse) 4.运行结果

附带源码:下载源码


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #大数据爬虫框架 #数据对一个企业越来越重要 #没有数据的支撑 #是一套基于基于Twisted