CrawlSpider获取高质量数据分析文章

前言

    由于之前学了一段时间的plotly,所以我很想写一篇关于数据分析的文章,但是看过很多篇文章的我发现自己进入了一个误区,数据分析并不是这么的简单,它种类复杂,对数学水平要求高,而我之前所做的就算的上是简单的统计。

    今天不讲数据分析,但是通过一个CrawlSpider的应用,可以让你的数据分析思维得到提高。这就算的上是站在巨人的肩膀上吸收精华。

案例分析

    今天爬取的网站是人人都是产品经理,这是我无意中发现的一个优质网站,里面的文章都是优质文章。爬取的类容有文章标题,发布时间,浏览次数,收藏数,点赞数,以及文章内容。



使用CrawlSpider的重点就是找到url的构成规则,就这个网站而言,

网页的构造规则为:http://www.woshipm.com/tag/+文章类型+/page/+数字  (http://www.woshipm.com/tag/%e6%95%b0%e6%8d%ae%e5%88%86%e6%9e%90)

文章的构造规则为:http://www.woshipm.com/文章类型/文章编号.html  (http://www.woshipm.com/data-analysis/3535097.html)

明确这些后就可以定义规则了。

rules = (
   Rule(LinkExtractor(allow='.+/page/\d+'),follow=True),
   Rule(LinkExtractor(allow='http://www.woshipm.com/data-analysis/\d+\.html'),callback='parse_item',follow=False)
)

代码实现

woshipm.py


from scrapy.spidersimport CrawlSpider, Rule

from scrapy.linkextractorsimport LinkExtractor

from ..itemsimport DataItem

class WoshipmSpider(CrawlSpider):

name ='woshipm'

    allowed_domains = ['woshipm.com']

start_urls = ['http://www.woshipm.com/tag/%e6%95%b0%e6%8d%ae%e5%88%86%e6%9e%90/page/1']

rules = (

Rule(LinkExtractor(allow='.+/page/\d+'),follow=True),

        Rule(LinkExtractor(allow='http://www.woshipm.com/data-analysis/\d+\.html'),callback='parse_item',follow=False)

)

def parse_item(self, response):

title=response.xpath('//h2[@class="article-title"]/text()').get()

ptime=response.xpath('//div/span[@class="post-meta-item"][1]/text()').get()

look=response.xpath('//div/span[@class="post-meta-item"][2]/text()').get()

sc=response.xpath('//div/span[@class="post-meta-item"][3]//span[@class="count"]/text()').get()

dz=response.xpath('//div/span[@class="post-meta-item"][4]//span[@class="count"]/text()').get()

content=''.join(response.xpath('//div[@class="grap"]//text()').getall()).strip()

item=DataItem(title=title,ptime=ptime,look=look,sc=sc,dz=dz,content=content)

yield item


items.py


import scrapy

class DataItem(scrapy.Item):

title=scrapy.Field()

ptime=scrapy.Field()

look=scrapy.Field()

sc=scrapy.Field()

dz=scrapy.Field()

content=scrapy.Field()

pipelines.py


from scrapy.exportersimport JsonLinesItemExporter

class DataPipeline(object):

def __init__(self):

self.fp=open('data.json','wb')

self.exporter=JsonLinesItemExporter(self.fp,ensure_ascii=False,encoding='utf-8')

def process_item(self, item, spider):

self.exporter.export_item(item)

return item

def close_spider(self,spider):

self.fp.close()


效果截图



    在此之前我阅读了与数据分析有关的文章,我个人认为数据分析不仅是一种技能可以帮助我们就业,还是一种思维。

    数据分析的好处在于它可以通过已有的现象寻找事物背后的规律,从而帮助我们节约决策时间,同时可以让我们更好的生活。比如在就业或者升学方面这是与我们自身是息息相关的,我们通过数据分析可以得出哪些职业正在消失,我们还可以大致推断未来的就业情况。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容