軟工實踐結對第二次作業
阿新 • • 發佈:2018-10-13
任務 mat blog cmp ont 數據 .cn 寫博客 pre
作業鏈接
作業博客鏈接 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1816W/homework/2160
Github鏈接 https://github.com/zhoujingping/PairProject-C
- 031602323 廖鈺萍
031602330 蘇芳鋥
分工
- 廖鈺萍:編寫爬蟲代碼,更新WordCount代碼
- 蘇芳鋥:編寫博客
PSP表格
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 15 | 20 |
? Estimate | ? 估計這個任務需要多少時間 | 15 | 20 |
Development | 開發 | 915 | 793 |
? Analysis | ? 需求分析 (包括學習新技術) | 120 | 92 |
? Design Spec | ? 生成設計文檔 | 30 | 45 |
? Design Review | ? 設計復審 | 30 | 27 |
? Coding Standard | ? 代碼規範 (為目前的開發制定合適的規範) | 15 | 12 |
? Design | ? 具體設計 | 60 | 135 |
? Coding | ? 具體編碼 | 300 | 382 |
? Code Review | ? 代碼復審 | 60 | 45 |
? Test | ? 測試(自我測試,修改代碼,提交修改) | 300 | 55 |
Reporting | 報告 | 90 | 98 |
? Test Repor | ? 測試報告 | 60 | 75 |
? Size Measurement | ? 計算工作量 | 10 | 8 |
? Postmortem & Process Improvement Plan | ? 事後總結, 並提出過程改進計劃 | 20 | 15 |
合計 | 1020 | 911 |
解題思路與實現
- 爬蟲:利用Python和scrapy框架編寫爬蟲代碼
代碼組織與內部實現
關鍵部分
int Paper::cmp(Word W1,Word W2) { return W1.count > W2.count; } void Paper::Vsort() { sort(Title.begin(), Title.end(), cmp); sort(Abstract.begin(), Abstract.end(), cmp); } int Paper::getgeneral_wordCount(int weight) { for (vector<Word>::iterator it = Title.begin();it != Title.end();it++) { general_wordCount = general_wordCount + it->count * weight; } for (vector<Word>::iterator it = Abstract.begin();it != Abstract.end();it++) { general_wordCount = general_wordCount + it->count; } }
附加題設計與展示
- 從網站爬取論文標題,發表日期和論文pdf鏈接,對論文按日期進行分類,生成表格,可通過鏈接轉到pdf頁面
- 通過爬取的日期計算每個月份出現的頻度,得到論文發表時間的分布圖
關鍵代碼解釋
def parse_detail (response):
item = CvprItem()
item[‘Title‘] = response.xpath(‘//div[@id="content"]//dd/div[@id="papertitle"]/text()‘).extract()
item[‘Abstract‘] = response.xpath(‘//div[@id="content"]//dd/div[@id="abstract"]/text()‘).extract()
yield item
def start_requests(self):
url=‘http://openaccess.thecvf.com/CVPR2018.py‘
yield Request(url,headers=self.headers)
def parse(self,response):
links= response.xpath(‘//div[@id="content"]//dt//a/@href‘).extract()
for link in links:
link = ‘http://openaccess.thecvf.com/‘+link
yield Request(link,headers=self.headers,callback=parse_detail)
遇到的問題
- 最初的wordCount程序數據結構設計不合理,導致後來修改花了許多時間
軟工實踐結對第二次作業