最近在寫畢業論文,是做個文本分類相關的題目。想抓取網易新聞里那些新聞內容作為分析的數據,於是就又照着scrapy的文檔照做了一遍。。。
感覺主要就只是兩個文件items.py和spiders文件夾下的爬取規則的文件,我這里爬取技術類文檔的直接叫tech.py了
scrapy的入門教程已經寫的很詳細了,大家可以先看看。地址為http://scrapy-chs.readthedocs.org/zh_CN/0.24/intro/tutorial.html
下面是我做的情況
1.創建項目 運行命令
scrapy startproject news
2.定義item
修改了下news文件夾下的items.py內容,添加了article和desc字段分別表示文章地址和內容
import scrapy class NewsItem(scrapy.Item): article = scrapy.Field() desc = scrapy.Field()
3.編寫爬蟲spider
在news/spiders目錄下,新建了tech.py文件
#coding:utf-8 from scrapy.contrib.linkextractors import LinkExtractor from scrapy.contrib.spiders import CrawlSpider,Rule from news.items import NewsItem class TechSpider(CrawlSpider): name = "tech" allowed_domains = ["tech.163.com"] start_urls = ["http://tech.163.com/"] rules = [Rule(LinkExtractor(allow=r"/16/03\d+/\d+/*"),'parse_item')] def parse_item(self,response): sites = response.xpath('//div[@class="end-text"]/p') items = [] content = [] for site in sites: content.append(''.join(site.xpath('text()').extract())) item = NewsItem() item['article'] = response.url item['desc'] = ''.join(content) items.append(item) return items
4.爬取數據與保存
我在new文件夾同級目錄下新建了個data文件夾,然后運行下面代碼
scrapy crawl tech -o tech1603.json
這樣就完成爬取了網易16年3月的一些技術文章,存為一個json了。。。如果想直觀的看的話可以通過http://www.bejson.com/查看抓取結果
5.然后想爬取下財經類文章
spiders文件夾下新建money.py
#coding:utf-8 from scrapy.contrib.linkextractors import LinkExtractor from scrapy.contrib.spiders import CrawlSpider,Rule from news.items import NewsItem class MoneySpider(CrawlSpider): name = "money" allowed_domains = ["money.163.com"] start_urls = ["http://money.163.com/"] rules = [Rule(LinkExtractor(allow=r"/16/03\d+/\d+/*"),'parse_item')] def parse_item(self,response): sites = response.xpath('//div[@class="end-text"]/p') items = [] content = [] for site in sites: content.append(''.join(site.xpath('text()').extract())) item = NewsItem() item['article'] = response.url item['desc'] = ''.join(content) items.append(item) return items
到data文件夾下運行
scrapy crawl money -o money1603.json
這樣財經類三月的一些文章也下下來了。。。
寫在后面的話
最后爬取的數據有爬了5,6類吧,不過貌似平均就100篇左右,可能是url規則制定的問題,數據太少也沒能用上,不過就當是學了下爬數據也算get個新技能吧。
tip:如果要做文本分類的話,搜狗有個文本分類的語料庫不錯,我最后要用的也是那個http://www.sogou.com/labs/dl/c.html,我下的精簡版,各類都是1990篇文章,只是做實驗就差不多夠了