码迷,mamicode.com
首页 > 其他好文 > 详细

scrapy爬取网易新闻内容

时间:2016-03-28 01:59:31      阅读:1457      评论:0      收藏:0      [点我收藏+]

标签:

 

最近在写毕业论文,是做个文本分类相关的题目。想抓取网易新闻里那些新闻内容作为分析的数据,于是就又照着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篇文章,只是做实验就差不多够了

scrapy爬取网易新闻内容

标签:

原文地址:http://www.cnblogs.com/fypp/p/5327472.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!