先前發文
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 使用
pip3 install scrapy
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