scrapy爬取网易新闻内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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篇文章,只是做实验就差不多够了
以上是关于scrapy爬取网易新闻内容的主要内容,如果未能解决你的问题,请参考以下文章
使用scrapy爬虫,爬取今日头条首页推荐新闻(scrapy+selenium+PhantomJS)