iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0
AI & Data

蟲王養成 - scrapy系列 第 12

DAY 12 : crawl 框架 scrapy 使用

先前發文
DAY 01 : 參賽目的與規劃
DAY 02 : python3 virtualenv 建置
DAY 03 : python3 request
DAY 04 : 使用beautifulsoup4 和lxml
DAY 05 : select 和find 抓取tag
DAY 06 : soup解析後 list取值
DAY 07 : request_header_cookie 通過網頁18限制
DAY 08 : ppt內文爬取
DAY 09 : 資料處理 split replace strip
DAY 10 : python csv 寫入 和dict 合併
DAY 11 : python class function
DAY 12 : crawl 框架 scrapy 使用


  • python3
  • scrapy
    pip3 install scrapy
    

scrapy getting started

scrapy startproject Newjob #jobname

cd Newjob/ && scrapy genspider ppt www.ptt.cc

參數解釋

    name = 'ppt'
    scrapy crawl 使用 name 找到spider

將要輸出資料的key定義一個scrapy類型 , 就可以通過pipline 或是 -o 這個參數

進行資料的傳遞或是儲存 , 除了csv以外也可以存成json(.json) 或是json line(.jl)

當輸出-o json後 如果檔案內已經有上一次執行的資料

json格式就會不符合 , json line就不會有這樣的情況發生。

執行scrapy crawl ppt -o name.csv

等等!

昨天的code 已經寫完class function架構了 , 接下來只要把code 放到scrapy框架後 , 然後把

start_requests 和 note改成如下的code , item引用就完成第一支scrapy爬蟲了!!

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url, callback=self.home_page)
    def note(self, response):
        
        item = PptCrawlerItem()
        item['firstpage'] = meta['firstpage']
        item['username'] = meta['username']
        item['classname'] = meta['classname']
        item['category_pages'] = meta['category_pages']
        item['category_title'] = meta['category_title']
        item['category_url'] = meta['category_url']
        item['a_title'] = meta['a_title']
        item['a_author'] = meta['a_author']
        item['a_date'] = meta['a_date']
        item['note_url'] = meta['note_url']
        item['note'] = meta['note']
        return item

那item.py的作用是幫你定義爬蟲要抓的資料有哪些 , 和 pipline.py 如何接item資料 並處理

明天來介紹一下scrapy 處理資料的架構

聽歌歌歌!!
Who Cares 胡凱兒 - 昨天 Yesterday


上一篇
DAY 11 : python class function
下一篇
DAY 13 : scrapy 架構
系列文
蟲王養成 - scrapy30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言