可关闭神券膨胀,不想关,删除变量
cron:随意,一天一次即可
请第1次拉完库,复制一份到scripts目录,不然每次都会覆盖!
手动修改py里面的数据
修改固定步数值,留空为随机步数
修改随机范围步数值,与固定步数二选一改
cron:随意,一天一次即可
抓3个数据,重新登录!重新登录才可以抓到数据
body查看表单即可获取
提现body 查看表单获取数据
cron:随意,一天一次即可
就是个网页,没有APP的
前段时间,有运营的童鞋提出了一个问题,为什么内容相似的文章在今日头条上的阅读量会有很大差别,高的有50000阅读量,低的连500都没有。头一次接到这样的需求,一时觉得有点棘手。常识上我们知道,在标题党横行的时代,标题对阅读量有非常大的影响,但是如何用数据来说明标题是怎么影响阅读量呢?这个问题不是给一些词云,做一些类别分组统计就能解决的。
以下是我针对这个问题的分析过程,由于水平有限,分析思路和过程存在一些不足,欢迎指正。
Behavior》,有两个方面的因素决定用户的浏览行为,一是文章是否是有影响力的大事件(如奥运会、世界杯等),二是文章与用户的兴趣的相关度。打开今日头条看一下,我们可以看到除了第一条是和谐的大新闻,下面都是基于兴趣的内容推荐。用户看到的是一系列文章的概览信息,包括标题、配图、文章来源、发布时间和评论数量。标题和配图代表了文章的主题,是决定用户是否点击阅读的关键因素。
如果用户对某篇文章感兴趣,那么他就会有一个click-through行为。在文章详情页面,用户可以进行评论、收藏、分享和关注作者等操作。
作为一个稍微懂一点点推荐引擎的人,我猜测今日头条的内容推送采取的是一种类似灰度发布的策略。首先圈定对内容感兴趣的候选人群,先小范围推送。如果某篇文章的反馈数据良好,则扩大推送范围。一旦发现反馈数据不理想,则不再扩大推荐范围。
用户的click-through、停留时长、评论、收藏等反映文章质量的用户行为数据都会反馈到推荐引擎,进而影响该文章的推送范围。
运营的需求是一个分类问题。根据上面的分析,我们可以大致确定变量的范围,包括标题、图片、评论数量。由于解析图片有点麻烦,所以先构建标题特征,看看分类效果怎么样。
选择娱乐八卦类的30个头条号,下载这些头条号的所有文章标题及其阅读量数据,共39836篇文章,这些文章的阅读量分布如下图所示。可以看到,50%的文章阅读量小于800,20%的文章阅读量大于10000。
注:头条数据下载方法,从{mid}下载指定头条号的数据
X_情感特征:使用腾讯文智判断标题是正面、负面还是中性情感,(0,0.3]=负面,(0.3,0.7]=中性,(0.7,1]=正面。
X_词性特征:使用jieba获取各个词性的词语数量(去除的、了等助词),没有过滤停用词,因为有些停用词(如副词)是标题党们的常用词。这里我们从搜狗词库解析出明星和品牌词作为附加词库。
X_语义依存特征:分析句子各个语言单位之间的语义关联,并将语义关联以依存结构呈现。使用哈工大LTP云API解析出特征。
X_内容类别:今日头条自动分类的结果,读取自json。
考虑到结果的可解释性,没有使用PCA、SVD降维,只使用卡方检验筛选特征,保留15%的特征。
2.3 分类算法及其参数
尝试了xgboost、CART决策树、随机森林、logistic回归四种分类算法,效果最好的两个是xgboost和随机森林,这两者的AUC差不多。如果特征再多一些的话,可能xgboost要比随机森林好不少了。
从AUC来看,分类效果尚可,过及格线了。看来标题很大程度上会影响阅读量。下面就来看看各个特征的重要性排序。
3.1 变量重要性分析
变量前缀说明:w=word,来自jieba词性和关键词匹配;d=dependency,表示语义依存特征;tag=分类,表示文章类别。
排在前三的变量是名词(词性)、时尚分类(文章类别)和明星(分词后在明星词库中匹配关键词,有=1,无=0)。可以看出,标题是否包含名词对阅读量影响最大,这是因为用户的兴趣大多也是基于名词构建的。文章分类也会影响阅读量,作为一个资讯产品,时效性强的文章分类可能更容易获得更高的阅读量(如时事、时尚、娱乐类内容)。
第二类比较重要的变量是w_感叹号、w_副词、w_代词、d_情态标记。这一类基本都是标题党常用的句式和词语。副词用来修饰、限制动词或形容词,表示时间、频率、范围、语气、程度等。情态标记(参考北京大学的《基于鲁川体系的语义依存关系标注规范》)表达言者由于主观的认识而引发的对事件的情绪和态度以及对事件的评估。有表示必然的:果然,果真,横竖,究竟,势必,早晚,终归,终究,终于;有表示反常的:反,偏,倒,岂,竟,不料,倒是,反倒,反而,竟然,居然,难道;表示能够、理应的:会,能,可以,能够,得,应,该,得,必,按理,必得,必须, 理应,务必,务须,应当,应该,不能不。根据上面的词语写个标题“唐艺昕改名是为了和张若昀更配,她居然用过这个名字...”,有名词,娱乐类内容,有代词、有情态标记,十足的标题党路子。
再来看看特征的覆盖率以及odds(几率、比值、比数,是指某事件发生的可能性(概率)与不发生的可能性(概率)之比。用p表示事件发生的概率,则:odds = p/(1-p))。从下图数据我们可以了解到:
4. 今日头条平台上的文章写作建议
根据以上的今日头条推荐算法分析和标题建模分析的结果,我对各位内容创作和运营的朋友有以下一些建议:
上一篇爬取‘今日头条-街拍’时,分页的实现可以简单的通过Query String Parameters获取到其固有的分页参数,而这次爬取今日头条-图片集,Query String Parameters中的分页参数是变化的,且无规律,每次刷新,分页参数都会发生变化。
对GET请求,类似于as、cp、_signature这种掺杂字母的参数,一般是随机生成的,无规律的;
通过切换多个Ajax,可以发现max_behot_time在一定范围内变化,具体以什么规律变化,还不得而知,不过值得关注的是,第一个Ajax中(也就是第一页)max_behot_time:0,再查看Preview,可以发现:
在next键下有{max_behot_time: },也就是指向下一页的max_behot_time,现在就明白了为什么第一页的max_behot_time为0,相当于关了一扇门给我们开了另一扇窗。接下来,我们的任务就是获取第一页被Ajax渲染的数据,提取下一页的max_behot_time。
但是,当我们以上一篇的方法去获取第一页的数据时,你会发现获取后返回的数据为空,主要是因为每次刷新时,as、cp、_signature、max_behot_time这些参数都是变化的,这时我们就需要来维持它的会话,也就是在代码的headers中加入cookie,来维持会话。
这里我们实现了一个无限循环来获取数据,可以获取5000条数据以上。
也可以自己设置成有限循环来获取自己需要的数据量。
获取图片帖子、图片来源、帖子的发布人名称、帖子发布人的个人主页、帖子的三张图片
存入mysql之前需先创建好数据库和数据表