首页 > 其他 > 详细

scrapy异步的爬虫框架简单的使用

时间:2019-12-08 20:37:40      阅读:84      评论:0      收藏:0      [点我收藏+]

scrapy异步的爬虫框架

异步的爬虫框架

  • 高性能的数据解析,持久化存储,全栈数据的爬取,中间件,分布式

  • 框架:就是一个集成好了各种功能且具有很强通用性的一个项目模板。
  • 环境安装:
    Linux:

  pip3 install scrapy

  Windows:

  1. pip3 install wheel

  2. 下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

  3. 进入下载目录,执行 pip3 install Twisted?17.1.0?cp35?cp35m?win_amd64.whl

  4. pip3 install pywin32

  5. pip3 install scrapy
  • 基本使用

    • 新建一个工程:

      前提需要将Twisted?17.1.0?cp35?cp35m?win_amd64.whl这个文件放在项目目录下

      # 在终端中执行下面这个命令
      scrapy startporject + “项目名”
      • settings.py:当前工程的配置文件
      • spiders:爬虫包,必须要存放一个或者多个爬虫文件(.py)
    • 进入项目

      # 在终端中执行
      cd + 项目名
    • 创建一个爬虫文件:

      # 在终端中执行:
      scrapy genspider spiderName www.xxx.com
      
      # 命令解析:
      scrapy genspider 爬虫文件名 url
      # 这个url是必写的,不写无法创建文件,可以随意些,最后在文件中修改

      技术分享图片

    • 执行工程:

      # 在终端中执行下面的命令:
      scrapy crawl spiderName
      
      # 执行命令scrapy crawl 加爬虫文件名
    • sttings文件中需要配置的:

      settings.py:
      
      - 不遵从robots协议
          如果选择不遵循robots协议的就修改文件中的
          ROBOTSTXT_OBEY = False   # 将True改为False
      
      - UA伪装
          将UA伪装的数据加载文件中
      
      - 指定日志输出的类型:
          将 LOG_LEVEL = 'ERROR' 添加到配置文件中
    • 爬虫文件中:

      # -*- coding: utf-8 -*-
      import scrapy
      
      
      class SecondSpidersSpider(scrapy.Spider):
          name = 'second_spiders'
          #允许的域名
          allowed_domains = ['www.123.com']
      
          #起始的url列表:列表元素只可以是url
          #作用:列表元素表示的url就会被进行请求发送
          start_urls = ['http://duanziwang.com/category/%E7%BB%8F%E5%85%B8%E6%AE%B5%E5%AD%90/']
      
          def parse(self, response):
              all_data = []
              article_list = response.xpath('/html/body/section/div/div/main/article')
              for article in article_list:
                  # xpath在进行数据提取时,返回的不再是字符串而是一个Selector对象,想要的数据被包含在了该对象的data参数中
      
                  title = article.xpath('./div[1]/h1/a/text()').extract_first()
                  content = article.xpath('./div[2]//text()').extract()
                  content = ''.join(content)
                  dic = {
                      'title': title,
                      'content': content
                  }
                  all_data.append(dic)
              return all_data  # 将解析到的数据进行了返回
  • 数据解析:

    • 1.response.xpath(‘xpath表达式‘)
    • 2.scrapy中的xpath解析,在进行数据提取的时候,xpath方法返回的列表中存储的不再是字符串,
      而是存储的Selector对象,相关的字符串数据是存储在Selector对象的data参数中,我们必须使用
      extract()/extract_first()进行字符串数据的提取
    • extract():可以作用到列表中的每一个列表元素中,返回的依然是一个列表
    • extract_first():只可以作用到列表中的第一个列表元素中,返回的是字符串
  • 持久化存储

    • 基于终端指令的持久化存储
      • 只可以将parse方法的返回值存储到指定后缀的文本文件中。
      • scrapy crawl spiderName -o ./duanzi.csv
    • 基于管道的持久化存储

scrapy异步的爬虫框架简单的使用

原文:https://www.cnblogs.com/zhufanyu/p/12006751.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!