scrapy異步的爬蟲框架簡單的使用


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
    • 基於管道的持久化存儲


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM