7 scrapy初認識

5606 ワード

scrapyフレームワーク
フレームワーク紹介:Scrapyは、Webサイトのデータを抽出し、構造的なデータを抽出するために作成されたアプリケーションフレームワークで、非常に有名で、非常に強いです.フレームワークとは,様々な機能(高性能非同期ダウンロード,キュー,分散,解析,持続化など)が統合された汎用性の高いプロジェクトテンプレートである.フレームワークの学習には,そのフレームワークの特性,各機能の使い方を学習することに重点を置く.
 
  :
  Linux:
      pip3 install scrapy
  Windows:
      a. pip3 install wheel
      b.   twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
      c.       ,   pip3 install Twisted‑17.1.0‑cp35‑cp35m‑win_amd64.whl
      d. pip3 install pywin32
      e. pip3 install scrapy

 
    
    1.    :scrapy startproject     
    2.cd  proName
    3.      scrapy genspider
    4.  scrapy crawl  spiderName

scrapy crawl  pa1 --nolog #  log  
# -*- coding: utf-8 -*-
import scrapy
class Pa1Spider(scrapy.Spider):
    #        
    name = 'pa1'
    # allowed_domains = ['www.xxx.com']   #     
    start_urls = ['https://www.qiushibaike.com/text/']  #   url       

    #     
    def parse(self, response):  #  
        div_list = response.xpath('//div[@id="content-left"]/div')
        names = []
        for div in div_list:
            # author = div.xpath('./div[1]/a[2]/h2/text()')[0].extract()
            author = div.xpath('./div[1]/a[2]/h2/text()').extract_first()

            names.append({'name':author})  #          ('json', 'jsonlines', 'jl', 'csv', 'xml', 'marshal', 'pickle')
        return names
    #      
    # -          :   parse            
      
scrapy crawl first -o qiubai.csv # .json .csv
    # -      pipelines 

-データ解析spider.py
-itemクラスitemsをカプセル化する.py
-itemタイプのオブジェクトspiderをインスタンス化py
-解析されたデータをitemタイプのオブジェクトに順次格納します.
-itemオブジェクトをパイプにコミット
     -       IO    spider.py

-パイプを開くpy
  #              :
     , settings.py , , , item, def process_item(): return item.
# :
  1 start_urls , , url
  2
     url ,%s %d
     ? parse
    yield scrapy.Request(url=url,parse.callback)
# 5
:
: item,
:
:   
     :
      - :
        1 UA UA , random.choice()
        2 IP(process_exception )
: ,
# POST :
   def start_requests(self):
      yield scrapy.FormRequest(url,callback,formdata)
  scrapy cookie , settings.py COOKIES_ENNABLE=False
#
  settings.py LOG_LEVEL='ERROR'
#
  settings.py LOG_FILE = 'path'
# :
  
   meta( ) ,
     meta:response.meta['key']

 
 
転載先:https://www.cnblogs.com/zhangchen-sx/p/10822936.html