scrapy爬取網易新聞內容


 

最近在寫畢業論文,是做個文本分類相關的題目。想抓取網易新聞里那些新聞內容作為分析的數據,於是就又照着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篇文章,只是做實驗就差不多夠了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM