葡京在线开户爬取朋友围,Get年度重大词

人生苦短,我为此Python && C#。

 与苹果的iOS家族相比,Android家族显然要特别得几近,但俗语有出口“林子大了哟鸟儿都有”,Android设备品类繁多,界面不很协调,再长其定位的擅自开放作风,直接造成了采用最短缺统一性。Android自身的开放性极大的促进了用的自主性,但对此开发者而言,在行使开发过程遭到,大到界面设计,小至屏幕分辨率、动态缩放及字体等都实在是蛮让人口头疼的题目,这为是怎么近些年来响应式设计愈渐风行的原委之一。对斯,来自美国自学成才的UI/UX设计师Meng
To
做自己所法与实战进程对Android应用设计进行了深入细致的辨析。

葡京在线开户 1

葡京在线开户 2

1.引言

近来初学Python,写爬虫上瘾。爬了豆瓣练手,又爬了商家之论坛生成词云分析年度重要词。最近刻着2017又独自留少月了,我之年份重点词是吗?
从而当想到爬取下自己之微信朋友围,来单词频分析,生成属于自己之春秋重大词词云。

朋友围的爬取是死有难度之,因为微信向未曾暴露API入口去爬取数据。
不过它们山之石,可以攻玉。
经各种搜索发现,已经起第三正工具得以形成朋友围的导出。其中微信公众号【出书啦】就算提供了这般平等栽服务,支持对象圈导出,并排版生成微信书。

设针对情侣围的爬取就是基于【出写啊】爬取朋友围后别网页后的第二破爬取。
稍微爬虫经验的,只要拿到导出朋友围的URL,后面的爬虫就相差吗道了。但针对分享与总的振奋,还是跟豪门频频道来。

=文中涉嫌个人隐私内容做了不同寻常处理=

    
 过去己无会在Android应用开发之策略准则及费事儿,因为我深信不疑实践出真知,更何况Android平台实在太为广泛,应用开发大不便统一,但今天Android平台早已日益成熟,这是件非常值得欣喜之好事。

2.拿走朋友围数据输入

方已介绍过了情人围的数据爬取是根据【出写啊】微信公众号转的在线微信书数据的第二不良爬取。

具体步骤很粗略:

  1. 关注【出写啊】微信公众号
  2. 点击【创作书籍】–>【微信书】–>【开始制作】–>【添加自由分配的生书啊小编为好友即可】
  3. 稍等片刻,微信书制作完,会收取小编发送的音讯提醒,如下图所显示。

葡京在线开户 3

点击上图的链接,我们就可以看到随月重新排版的爱侣围数据,如下图所示:
葡京在线开户 4

至今,我们以到朋友围的数输入——【出写啊】排版生成的微信书链接。

描绘了爬虫的,后面就是好一直略过了。
自,没写了爬虫也不思量入手的,也可以管【出书啊】生成的微信书链接留言或私信给自己,我帮忙您取得年度重要词。

归来按钮
       在十分丰富一段时间里,返回按钮因为同的硬件问题永远不见面化为用户界面的平等片。而现硬件按钮都日益消退,早于2012新春,Google便官方表明“为了为用户用以带来最好直观、无缝的经验,开发者在进展规划时要停止使用硬件式按钮。”现在,当用户进行内容分层次浏览时紧挨着相应使LOGO处有一个表示“返回”的箭头已变成雅流行的做法。用户界面的归按钮(即所谓的“向上按钮”)相比硬件式返回按钮稍有差,当发展按钮只是用界面内容退返上同一页时,返回按钮可以直接降低回来之前运用的别利用或内容。

3.条件准备

正文所形容爬虫基于python2.7 + scrapy + jieba + wordcloud,使用VS Code IDE。

  1. Scrapy否Python中较盛行的爬虫框架。
  2. Jieba举凡比较好用的国语分词模块。
  3. Wordcloud 用于生成词云。

葡京在线开户 5

4.生化为爬虫项目

率先步:命令执行执行scrapy startproject weixin_moment,生成Scrapy爬虫项目。
老二步:进入创建的weixin_moment目录,执行scrapy genspider 'moment' 'chushu.la'创建朋友围爬虫。
实施以上两步后底文书夹结构如下:

葡京在线开户 6

屏幕分辨率

5.剖析数据源

数的精确抓到手,需要对数据源进行规范分析。这同步我们即将来分析【出写啊】生成的微信书链接的数量加载方式。老规矩,F12开发者工具用起。

葡京在线开户 7

自从达成图我们得以视这是一个get请求,返回的json类型格式数据。

点击Preview页签可以看出如下图所显示之数量:

葡京在线开户 8

于图被可见见返回的目录导航数据包,其数据是据月度进行加载的。当点击导航按钮,其加载对应月份的朋友围数据。

葡京在线开户 9

我们点击【2014-3】再观察网络要,发现如下请求:

葡京在线开户 10

自打上述数量我们可以明细来看,其应用的凡用json传参的post的方式呼吁数据包。点击Preview页签,看到返回的分页JSON数据包。

葡京在线开户 11

进行某个节点,我们得以发现朋友围数据藏于data/paras节点下。

葡京在线开户 12

至今,我们做到数据的起源分析。

      
在Android平台达成,所有的屏幕分辨率都相当的叫人口摸不着头脑,从xhdpi(2x)、hdpi(1.5x)到mdpi(1x),听起十分有技术含量。差不多一年前当自家刚好起念Android应用开发设计时,伟大之顺序猿们甚至还不曾和自己解释其每个的比值到底是聊,当然我掌握也许在她们看来这不是只问题,但对菜鸟而言,这实际是甚丑的不行题材,不过不知情就咨询,学生时的课堂上导师不都这样说的呗。

6.蜘蛛来也

成功了数据源分析,我们只是需要构造数据要,并开展对的数目解析,即可将到我们想如果的数额!

葡京在线开户 13

6.1.要导航数据包

修改moment.py定义start_requests方法:

bookid = '12345678'  #请填写【出书啦】返回链接中的数字部分
def start_requests(self):
        """
        使用get方式请求导航数据包
        """
        url = 'http://chushu.la/api/book/chushula-{0}?isAjax=1'.format(self.bookid)  #获取目录的url
        yield scrapy.Request(url, callback=self.parse)

重载parse艺术,解析获取到之导航数据包:

def parse(self, response):
        """
        处理获取到的导航数据包
        """
        json_body = json.loads(response.body)  #加载json数据包
        catalogs = json_body['book']['catalogs']  #获取json中的目录数据包

祈求:Android屏幕分辨率

6.2. 殡葬导航请求,抓取朋友围数据

因地方跟踪到出的http导航请求,要想抓到手到对象围数据,我们要依据发之恳求参数构造参数。
葡京在线开户 14
自从上图可知,主要含有五单参数:

  1. type:”year_month”为默认值
  2. year: 年份
  3. month: 月份
  4. index: 第几页
  5. value : 由时拼接的字符串

承修改我们的parse计,遍历我们第一步抓到手到的领航数据包构造请求参数:

def parse(self, response):
        """
        处理获取到的导航数据包
        """
        json_body = json.loads(response.body)  #加载json数据包
        catalogs = json_body['book']['catalogs']  #获取json中的目录数据包
        url = 'http://chushu.la/api/book/wx/chushula-{0}/pages?isAjax=1'.format(self.bookid) #分页数据url
        start_page = int(catalogs[0]['month'])  #获取起始月份作为index传值
        for catalog in catalogs:
            year = catalog['year']
            month = catalog['month']
            formdata = {
                "type": 'year_month',
                "year": year,
                "month": month,
                "index": str(start_page),
                "value": 'v_{0}{1}'.format(year, month)
            }
            start_page += 1

为由我们跟到之http请求来拘禁是冲json传参的post请求:
因而我们如果这样发起呼吁:

yield scrapy.Request(
                url,
                method='POST',
                body=json.dumps(formdata),
                headers={'Content-Type': 'application/json'},
                callback=self.parse_moment)

一样我们需要定义一个回调函数用来拍卖回来的情人围数据。定义parse_moment方式,根据返回的json数据包进行数据提取:

def parse_moment(self, response):
        """
        朋友圈数据处理
        """
        json_body = json.loads(response.body)
        pages = json_body['pages']
        pattern = re.compile(u"[\u4e00-\u9fa5]+")  #匹配中文
        item = WeixinMomentItem()
        for page in pages:
            if (page['type'] == "weixin_moment_page"):# 仅抓取朋友圈分页数据
                paras = page['data']['paras']
                if paras:
                    moment = ''
                    for content in paras[0]['rows']:
                        result = re.findall(pattern,
                                            content['data'])  #使用正则匹配所有中文朋友圈
                        moment += ''.join(result)
                    item['moment'] = moment
                    item['date'] = page['data']['dateText']#获取时间
                    yield item

以上用到了概念的WeixinMomentItem。修改items.py,做如下修改:

class WeixinMomentItem(scrapy.Item):
    """
    朋友圈Item
    """
    # define the fields for your item here like:
    # name = scrapy.Field()
    date = scrapy.Field()  #日期
    moment = scrapy.Field()  #朋友圈文字

时至今日我们成功爬虫的书。是休是焦急跑一下。

      
对于下,必须为720×1280、540×960跟360×640抵的屏幕分辨率来开展规划,以管硬件式按钮及所设计之高保真实体模型(样机)上发生状态栏的地儿。

6.3. 蜘蛛爬起来

命执行执行scrapy crawl moment -o moment.json,稍等片刻,热乎的朋友围数据就成形到moment.json文件被了。

葡京在线开户 15

入门套件
    
   大多数Android应用中,动作栏是无与伦比明显的UI元素。如果已厌倦使用默认风格,可以尝试下在线工具Android
Action Bar Style Generator
别炫目的动作栏。使用该网页应用,选好各个位置的颜料,便可自动生成所有相应的资源文件并打包成zip格式压缩包以供下载,里面包含有720×1280、540×960跟360×640叔种植分辨率资源。

7. 分词处理

jieba中文分词提供了便民之接口用于分词和词频统计。我们一直调用jieba.cut法即可得到分词结果。在此之前我们用加载我们爬取的对象围数据,即保存及moment.json文件中之多寡,并拼接所有朋友圈文本传参至jieba.cut即可。
初添加一个analyse.py文件,定义analyse_words方法:

# -*- coding: utf-8 -*-

"""分析导出的朋友圈数据"""

import json
import os

import jieba
from wordcloud import WordCloud


def analyse_words():
    """
    分析抓取到的朋友圈数据,使用jieba进行分词,使用wordcloud生成词云
    """
    curr_path = os.path.dirname(__file__)  # 当前文件文件夹所在目录
    parent_path = os.path.dirname(curr_path)  # 上层目录
    file_path = os.path.join(parent_path, 'moment.json')
    font_path = os.path.join(parent_path, "simhei.ttf")
    if not os.path.isfile(file_path):
        return
    with open(file_path) as moment_file:
        data = json.load(moment_file)  # 使用json加载文件
        moments = [item.get('moment', '') for item in data]  # 获取朋友圈文字数组
        contents = ' '.join(moments)  # 拼接为长文本
        cut_texts = ' '.join(jieba.cut(contents))  # 使用结巴分词进行中文分词

葡京在线开户 16

8. 生变成要词词云

词云需要依据上一样步之分词结果生成词云。代码也十分简短:

cloud = WordCloud(font_path=font_path)
        wordcloud = cloud.generate(cut_texts)  #生成词云
        wordcloud.to_file('keys.png')  #保存图片
        image = wordcloud.to_image()  # 转化为图片
        image.show()  # 展示图片

终极当文件末尾调用analyse_words(),命令执行执行python analyse.py即可生成关键词!

葡京在线开户 17

汝可能嫌弃以上生成的乐章云于丑,没提到,你可以使wordart做出各种酷炫的作用。

 

9. 最后

因【出写啊】未健全反爬机制,所以爬虫写下来为没啊难度,所以谢兴趣的不妨尽早动手试一试行。本文由学习分享,无恶意窃取数据的了,也呼吁读者不要用来他道!

贪图:三栽分辨率

       而来自Telly的设计师Jeremy
Sallée之前为举行了一个不行实用的可视化文档,展示了立即三栽分辨率的差。

9-slice Scaling(9格缩放)

      
Android上闹一个同CSS非常不同的异常特别之图形化资源管理章程,9-slicing允许开发者随心所欲地指定是否缩放,即使界面调整,圆角还得维持无转移。

葡京在线开户 18

图:9格缩放

      
所谓9格,即如图所著,中间5区为内容区,正常缩放;1、3、7、9为角,不进行缩放;2、8左右向缩放;4、6就算为缩放。9格缩放在UI设计着很实用。

葡京在线开户 19

 

图:Android 9-slice

动作栏

        不同为iPhone上用标题常在页首中级位置,在Android平台达成,应用标题正常在左上方靠近LOGO的地方,这吗致使如果点击应用图标,可能会见转化某平等歪斜菜单或退回到上一界面。

葡京在线开户 20

    
   某些情况下标题栏往生会有一个三角形小箭头,表示内容目录为可个别浏览,如同在PC上一致,在Android设备上应用下拉式菜单也颇普遍。

葡京在线开户 21

      
除此之外,其他有的动作都该互相对立于右上,包括刷新(在Android设备上通过下拉刷新并无广泛)、搜索与其余如返回等职能按钮,在动作栏中,使用了多之意义按钮并无适当,也尽管是所谓的物极必反,因此要宜的好。

葡京在线开户 22

字体
    
   但即便字体而言响应式效果就死要紧,但非常倒霉字体是一定的,这为一直造成在某些设备上那个形效果异常让人“难了”。尽管智能手机更新迭代速度迅猛,但健康情况下一旦惦记管一点尚得在旧式手机上来测试,至于浏览器,还是采用IE6比较好。在Android上最让欢迎的书是Droid
Sans,它是足以免费下载的,而现在Roboto以初装置及尤其流行,大出撞击的势。

葡京在线开户 23

 

图:Droid Sans  vs.  Roboto

目尺寸

      在Android
xhdpi(2x)中,像从最小值为正文28px、菜单与页首96px、页脚116px,只比较iOS(24px、88px及100px)稍长,Android与iOS的比率为116%。

计划测试

  • 在Android手机上

       来自Google的Roman Nurik之前发表了一样舒缓名叫吧Android Design
Preview
的一对一实用的工具,允许开发者在融洽之Android设备上拓展统筹测试,能盖充分全面的例如素值展示桌面视图或设计图像,不欲经Dropbox(一个提供联合本地文件的网存储在线下),也非会见拿图片压缩得失真。 

  • 在Mac上

    
   要想在Mac上进展测试必须透过对安康隐私的系统参数进行设置,以担保除App
Store内之外的下可下载。

葡京在线开户 24

图:系统参数设置

 

葡京在线开户 25

 

祈求:Android设计演示

 

      
在做到上述设置后,通过USB数据线连接设备及,点击“Install
App(安装使用)”,随后即可进行现身说法测试。