美文网首页我爱编程
用scrapy爬取一个网站的大概流程

用scrapy爬取一个网站的大概流程

作者: IT大牛辉 | 来源:发表于2018-12-03 19:39 被阅读62次

大概流程

8986d6be-2de6-47b6-9318-e6822b63bb08.png

一、制作Scrapy 爬虫 一共需要4步:

  • 1.新建项目
scrapy startproject 爬虫项目名称
  • 2.新建一个新的爬虫, 明确目标
编写items.py:明确你想要抓取的目标
    1. 制作爬虫
 scrapy genspider 爬虫文件名称 域名:制作爬虫开始爬取网页
    1. 存储内容

二、这些简单的命令就是新建一个scrapy爬虫项目了,接下来就开始写代码了

  • (1)settings.py 修改一些基本的设置
1、是否遵守robot协议(为True表示遵守)
      ROBOTSTXT_OBEY = False


2、设置下载延时(默认为0)
      DOWNLOAD_DELAY = 1(秒)


3、构建一个请求头:设置'User-Agent'
      DEFAULT_REQUEST_HEADERS = {
    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',


4、激活管道,管道文件后面跟的数字, 表示的是优先级,数字越小,优先级越高
      ITEM_PIPELINES = {
   'chinaz.pipelines.ChinazPipeline': 300,
}
5、如果要是存储数据库就添加以下代码比如:
MYSQL_HOST = 'localhost'‘
#用户
MYSQL_USER = 'root'
#密码
MYSQL_PWD = 'a123'
#数据库
MYSQL_DB = 'wangzhandb'
  • (2)item.py:定义要爬取的字段
class ChinazWebItem(scrapy.Item):
    #标题
    webName = scrapy.Field()
    #周排名
    weekRank = scrapy.Field()
    #反连接数
    linkNum = scrapy.Field()
  • (3)爬虫文件.py
#存储数据的容器,这是在item.py中定义你要爬取的字段
from chinaz.items import ChinazItem,ChinazWebItem
    #修改起始的url (可以指定多个)
    start_urls = ['你要爬取的url']
  #接下来你只需要爬取你所需要的数据了
def req_url():
    获取到你想要的数据。
    要是获取到新的url,就发起新的响应
    #使用yield函数
     yield Request(url=parse.urljoin(新的url), meta={参数},
        callback=你要调用的函数)


def parse_detail(self,response):
    写你要爬取的数据
  • (4)pipelines.py:#在这里做数据的过滤和持久化
  • 注意:在使用管道之前,我们要先激活管道,在settings文件中激活
pipelines.py:设计管道存储爬取内容
如果要是存储数据库的话就添加下面的代码

class WangzhanprojectPipeline(object):

    def __init__(self, host, user, pwd, db):
        # 创建mysql连接
        self.client = pymysql.Connect(host, user, pwd, db, charset='utf8')
        # 创建游标
        self.cursor = self.client.cursor()

    @classmethod
    def from_crawler(cls, crawler):
        host = crawler.settings['MYSQL_HOST']
        user = crawler.settings['MYSQL_USER']
        pwd = crawler.settings['MYSQL_PWD']
        db = crawler.settings['MYSQL_DB']
        return cls(host, user, pwd, db)


#保存到本地
class ChinazPipeline(object):

    def __init__(self):
        #一般在初始化方法里面创建数据库连接,或者是文件
        self.file = open('chinaz.json','a+')
        self.webFile = open('chinazweb.json','a+')
在这里面处理引擎传过来的数据,进行保存
  • (5)middlewaresSpider.py:中间件

三、各个py文件之间的关系

  • (1) Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
  • (2) Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
  • (3) Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
  • (4) Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
  • (5) Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
  • (6) Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
  • (7) Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

相关文章

  • 用scrapy爬取一个网站的大概流程

    大概流程 一、制作Scrapy 爬虫 一共需要4步: 1.新建项目 2.新建一个新的爬虫, 明确目标 制作爬虫 存...

  • 2021-07-21

    Scrapy框架的基本使用 scrapy框架简介 Scrapy是用纯Python实现一个为了爬取网站数据、提取结构...

  • [CP_14] Python爬虫框架01:Scrapy框架创建项

    目录结构 一、Scrapy框架简介 1. Scrapy引入 Scrapy:是用Python实现爬取网站数据、提取结...

  • Scrapy爬取数据初识

    Scrapy爬取数据初识 初窥Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 ...

  • 强大的爬虫利器scrapy(介绍与安装)!

    scrapy简介: scrapy是一个爬取较高水平网站的数据抓框架,用于爬取网站跟从它们的页面提取数据,并且用途范...

  • Scrapy框架简介

    Scrapy 是一个用 Python 实现的为了爬取网站数据、提取结构性数据的应用框架。Scrapy 使用Twis...

  • Scrapy

    Scrapy简介和历史 Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用...

  • Scrapy工作流程

    scrapy是工作流程 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代...

  • Scrapy

    Scrapy的简介: Scrapy是用纯Python实现一个为了爬取网站数据,提取结构性数据而编写的应用框架,用途...

  • Scrapy框架学习---Scrapy介绍(一)

    Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非...

网友评论

    本文标题:用scrapy爬取一个网站的大概流程

    本文链接:https://www.haomeiwen.com/subject/dylucqtx.html