⑴ 爬今日头条,各种失败经验,之后成功了
最近研究了一下js加密,发现今日头条比较适合练手,在头条获取数据的XHR中request参数有一项_signature参数,这个是就是经过js加密的数据。解决方案在最后。
先说寻找逻辑,叫顺藤摸瓜,藤是params中的key,瓜是js函数,在哪里摸,我用的是chrome F12,全局查找,就是在网址ctrl+f,注意看结果,前面有url这种一般都是在headers之类带着没什么价值,要看出来具体数据的。
然后在preview里,格式化看得清楚,还是查找signature。
这样就成功一大半了。顺便还找到了as和cp
as: e.as,cp: e.cp,
这个e也在前面定义了var e = ascp.getHoney(),然后在搜索getHoney,就找到了。
把这段复制进pycharm的zhu.js文件里,然后新建一个python文件来运行,nodejs直接运行也行。
额,报错了,execjs._exceptions.ProgramError: ReferenceError: md5 is not defined
赶紧查了一下md5是个加密模块, nodejs安装MD5 ,然后改装了改装一下,增加了var md5 = require('md5-node');运行成功。
然后就到了signature, _signature: i,i = TAC.sign("refresh" === t ? 0 : r.params.max_behot_time_tmp))
params.max_behot_time_tmp应该是在回传的数据里的max_behot_time了。
首次请求是0,后来的是根据前一次请求的后传数据继续请求。
不知所云,但还是按照老办法试试看能不能运行。
execjs._exceptions.ProgramError: TypeError: Cannot read property 'userAgent' of undefined。
这回我参考一下 别人怎么办
原来要加useagent,
global.navigator={};
global.navigator.userAgent=
然后变成这样
调用发现又有错误:
好像说的是var data = TAC.sign(0);之前出现了一个不该出现的逗号,把它改成分号,果然成功了,
满怀欣喜的把signature,cp,as找到拼接成url发送,结果并不能返回数据。
有些忧郁的又看看别人怎么办, 用selenium获取参数 ,phantomjs不维护了,听说chrome headless可以替代之, 别人家说这么用 ,chrome还是打开窗口了,后来发现chromedriver.exe版本与chrome有严格的对应关系。 官网这样说
总算是chrome是无头的了,现在只差跟着up主把参数弄出来就行了,因为有了前面的查找,selenium执行的函数名称也很清楚,
signature = brower.execute_script('return TAC.sign(0)')
果然出来一个参数,开心的拼接url发送请求还是没数据回来。。。
忧伤的想了好久,尝试了多次,终于在手机版里发现可以不用cp和as参数,用哪里生成的signature都能拼接出结果,只是max_behot_time是藏在前一页最后一项的信息里
用requests的session或者scrapy都能连续爬取了。不过m站将返回数量20写进了js里,更改params的参数也不能控制一次的爬取量还是很是遗憾。
结果
好像必须带着cookie才能爬取后续的,不然永远都只能爬取第一页的内容,获取cookie用request的session都不行可能只能用selenium获取cookie之后再来。忧伤。。。
⑵ 算法工程师工作期间需要掌握什么知识学到哪些核心技术
算法工程师的主要核心技术基于数学,并辅以语言。要全面掌握的知识包括高级数学,复变函数,线性代数的离散数学,数据结构以及数据挖掘所需的概率论和数学统计知识。不要太受约束去平时阅读教科书并多练习,并培养良好的思维能力。只有那些有想法的人才能拥有技术的未来。尝试实现您遇到的任何算法,无论算法的优劣总是有其自身的特征。此外,您必须具有一定的英语水平(至少6级),因为该领域的大多数官方材料都是外语。
计算机及相关专业本科以上学历,在互联网搜索,推荐,流量或相关领域有2年以上工作经验。熟悉机器学习/自然语言处理/数据挖掘/深度学习中至少一项的原理和算法,并且能够熟练地建模和解决业务问题。精通Linux平台下的C / C ++ / Java语言开发,精通使用gcc / gdb等开发工具,并精通Python / Linux Shell / SQL等脚本开发。熟悉hadoop / hbase / storm等分布式计算技术,并熟悉其运行机制和体系结构。具有出色的分析和解决问题的能力,思路清晰,并对工作挑战充满热情。具有强烈的工作责任感和团队合作精神,并能够交流和更好地学习。
⑶ react angular vue nodejs哪个用的最多
不吹不黑的说,你们说vue简单,其实在我看来,是比react简单,那是因为它优雅,优雅的只需要盖房子不需要和水泥……
react说好听点叫入门难,实际上就是不优雅,但是不得不承认react是真的灵活的多……
angular没用过俺也不知道……但是之前尤总和漠总在微博上也是撕的不可开交,从这一点来看,姑且已经被比对过太多次了……你可以去微博翻一下这些黑历史
说react灵活我觉得事实胜于雄辩,最现实的例子就是react-like的库很多,比如preact,anu……
但是vue几乎没人去搞类vue的框架
说vue优雅,也是同样的,例子很明显,vue-cli和creat-react-app就不是一种体验,用过vue-cli的都觉得贼贴心
至于两者的前景哪个好……这个还是不要讨论了,因为没啥意义,因为两者都“一样”好……
而事实上,这个一样可以说很一样了……
即便你学了vue,回头再学react你会发现妈呀都差不多的嘛,除了语法(jsx和vue的模板式代码),剩下的几乎就是一模一样了……迁移成本几乎没有
当然也有人说是抄袭……我是很反对这么说的……你想啊,全世界的网站都长得差不多,我还说新浪微博长得像今日头条(首页排版),为啥你不去说他们抄袭呢?
所以,以后不要问这种问题啦,其实vue和react都差不多,学哪个都一样,后期学第二个的成本实际上并不大,所以可以这么下结论:学会了一个,等于学会了两个
⑷ 自媒体交易平台有哪些越全越好
第一个阶段是自媒体初始化阶段,它以BBS为代表;第二个阶段是自媒体的雏形阶段,主要以博客、个人网站、微博为代表;第三个阶段是自媒体意识觉醒时代,主要是以微信公众平台、搜狐新闻客户端为代表。
自媒体的发展正处于雏形阶段向自媒体觉醒时代的过渡时期。但是由于自媒体的诞生至今也不过十多年,这三个阶段其实同时存在,只不过现阶段是以微博、微信公众平台为自媒体的主体,其他的就相对弱小。
(4)今日头条nodejs扩展阅读
自媒体营销利用社会化网络、在线社区、博客、网络、短视频、微博、微信、今日头条、网络、搜狐、凤凰、UC等平台或者其他互联网协作平台和媒体来传播和发布资讯,从而形成的营销、销售、公共关系处理和客户关系服务维护及开拓。
一般自媒体营销工具包括论坛、短视频、微博、微信、今日头条、网络、搜狐、凤凰、UC、博客、SNS社区,内容、图片和视频通过自媒体平台或者组织媒体平台进行发布和传播。
⑸ 大厂的前端面试难吗
分享给你一些面试题
一面
小米的面试官给人的感觉很亲切很真诚,是一个体验很不错的面试。
css 实现图片自适应宽高
讲 flex,手写出 flex 常用的属性,并且讲出作用
BFC 是什么
项目里面的前端鉴权是怎么实现的?
vue 里面的虚拟 dom 是怎么回事?
vue 双向绑定讲一讲
手写函数防抖和函数节流
讲讲常用的 es6 语法,比如 let、promise、class 等等
浏览器渲染过程,回流重绘等等,load、DOMContentLoaded 等等事件的触发顺序
从小米应用商店里面随便找了一个需求让我现场实现,写伪代码
二面
讲项目里面的鉴权和图片懒加载怎么实现的
讲 vue-lazyloader 的原理,手写伪代码
讲 express 框架的设计思想
线上日志是如何处理的
讲事件循环
讲 nodejs 的 eventEmitter 的实现
三面
讲项目里面做的事情
讲 vue 的响应式原理、依赖收集、监听数组、虚拟 dom 等等
讲 express 的中间件系统是如何设计的
现场从小米应用商店中找出一个需求现场实现,说思路,写关键的代码
四面
讲 vue-lazyloader 源码以及设计
使用 es5 实现 es6 的 class
websocket 握手过程
浏览器的事件循环和 nodejs 事件循环的区别
百思编程(过)
这个公司是猎头推荐的,CEO 比较强势,也算比较有趣。
一面
跨域以及解决办法
手写一段小算法
JavaScript 的 sort 方法内部使用的什么排序?
二面
这一面是 CEO 面,主要问了我的职业规划等等问题,在我没有表现出很强的要去该公司的意愿后,直接给我送走了…
ponyAI-基础架构(过)
一面
讲项目里面干了啥
vue-lazyloader 怎么实现的
vue 的响应式系统、虚拟 dom
函数式编程
手写了一个算法题
二面
这轮面试时从美国打电话过来的,事后才知道是 Google 的前端…
讲讲项目里面做了什么
vue 原理,和 react 的区别(其实我没怎么用过 react)
JavaScript 异步的处理方式,现场出了一个问题,使用 promise 实现
三面
讲项目模块规划、项目如何部署、如何优化等等
手写函数的防抖
手写一道算法题
四面
讲讲项目
手写一道算法题
洋钱罐(过)
一面
讲项目
前端持久化的方式、区别
vue-lazyloader 的原理
怎么配 webpack
手写 vue 双向绑定
讲 es6 的一些特性,并且现场出了几个代码片段,说结果
手写一道算法题
http 状态码
二面
讲项目
vue-router 的原理
项目中怎么用的 webpack,怎么优化
讲 express 的设计原理
手写一道算法题
创新奇智(过)
一面
讲项目
手动实现 parseInt
二面
这一面居然遇到了前同事…写了一些笔试题,问了一些问题!
三面
讲 tcp/ip 网络层、三次握手,为什么不能两次握手
讲 vue 原理
手写一道算法题
猿辅导(跪)
猿辅导好像总共就一面,期间一些实现方式和面试官有争议(没有冲突)。
一面
手写 vue 的 mixin 方法
手写 promise 的 all 方法
现场出了一个移动端的小需求
搜狐-垂直媒体部门(过)
一面
讲项目
项目里面用 nodejs 做了啥
抽取了哪些 vue 组件
二面
讲项目
手写实现 promise
腾讯-地图(跪)
腾讯两个部门面试都会先做一套笔试题,笔试题基本就是一些常见的前端问题以及算法题
三面
讲项目,对项目提了一些问题
怎么判断一个点是否在圆形内、正方形内
对笔试题
腾讯-天天快报(跪)
也是先做了一套笔试题,但是令人尴尬的是,面试官觉得我快排写错了,然而我只是在原地快排没有申请额外空间…
笔试题
没了
网络-网络云(过)
这个部门今年据说升为一级部门了,好像还挺不错的~
一面
讲项目
vue 响应式原理,什么是 mvvm
es6 使用过的特性
flex 常见的属性
css 选择器的优先级
抽取过哪些 vue 组件
二面
讲项目
express 设计原理,面试官对动态路由匹配一直追问下去,但是这里的源码设计我确实是忘了,一路讨论下去扯到了字符串的前缀树…
实现一个事件发布订阅类,其实就是 eventEmitter
三面
三面是山大老学长,聊了一些业务上的事情~
搜狗-手机搜狗(过)
搜狗一面的体验比较差,面试官给人的感觉不太好…
一面
讲项目
事件循环
回调函数的坏处
vue 里面哪儿不会用到双向绑定
二面
忘了…
快手-商业化(过)
一面
讲项目
如何抽取公共组件的
vue 的响应式原理
如何实现一个可设置过期时间的 localStorage
实现一个发布订阅系统,包括 on、emit、off 等等
二面
一道智力题
软件工程思想、设计模式等等
async/await 代码片段,说输出结果
今日头条-广告系统(过)
一面
讲项目
讲 lazyloader 实现
用 docker 做了什么
用 webpack 做了什么
手写一个算法题
讲 flex
vue 响应式原理
es6
二面
JavaScript 异步
优化项目
vue 原理,包括计算属性、依赖收集等等
用 JavaScript 的异步实现 sleep 函数
算法题
三面
手写快排,时间复杂度,优化
手写实现 jsonp
项目部署,线上问题等等
websocket 握手过程
四面
对 vuex 的理解,单向数据流
设计一个单点登录的系统,类似阿里系那种
手写一个算法
五面
实现一个联想搜索组件
手写函数防抖和节流
OPPO 成都研发中心(过)
一面
讲项目
讲 vue 的 响应式系统,讲了好久,从渲染 watcher 到虚拟 dom,面试官还跟我讨论了好久
忘了
二面
讲项目
忘了
百词斩(跪)
首先会在线做一道算法题,挺简单的,百词斩感觉挂的稀里糊涂的…
一面
websocket 握手过程
tcp/ip 网络层,http 的特点
http 强行使用 udp 能实现吗?
vue 原理
webpack 热更新原理,使用过的插件
原型、闭包、跨域
手写了一道算法题
为什么面这么多公司
因为我是实习直接转正的,也没参加过秋招,所以对自己在市场上是个怎样的实力没有一个清晰的了解,而且我也想多了解一下其他公司在做什么,于是就尽量的多面,不过说实话面试确实挺累的。
⑹ python可视化神器——pyecharts库
无意中从今日头条中看到的一篇文章,可以生成简单的图表。据说一些大数据开发们也是经常用类似的图表库,毕竟有现成的,改造下就行,谁会去自己造轮子呢。
pyecharts是什么?
pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是网络开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒, pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图 。使用pyecharts可以生成独立的网页,也可以在flask、django中集成使用。
安装很简单:pip install pyecharts
如需使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可,同时兼容 Python2 和 Python3 的 Jupyter Notebook 环境。所有图表均可正常显示,与浏览器一致的交互体验,简直不要太强大。
参考自pyecharts官方文档: http://pyecharts.org
首先开始来绘制你的第一个图表
使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可
add() 主要方法,用于添加图表的数据和设置各种配置项
render() 默认将会在根目录下生成一个 render.html 的文件,文件用浏览器打开。
使用主题
自 0.5.2+ 起,pyecharts 支持更换主体色系
使用 pyecharts-snapshot 插件
如果想直接将图片保存为 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。使用该插件请确保你的系统上已经安装了 Nodejs 环境。
安装 phantomjs $ npm install -g phantomjs-prebuilt
安装 pyecharts-snapshot $ pip install pyecharts-snapshot
调用 render 方法 bar.render(path='snapshot.png') 文件结尾可以为 svg/jpeg/png/pdf/gif。请注意,svg 文件需要你在初始化 bar 的时候设置 renderer='svg'。
图形绘制过程
基本上所有的图表类型都是这样绘制的:
chart_name = Type() 初始化具体类型图表。
add() 添加数据及配置项。
render() 生成本地文件(html/svg/jpeg/png/pdf/gif)。
add() 数据一般为两个列表(长度一致)。如果你的数据是字典或者是带元组的字典。可利用 cast() 方法转换。
多次显示图表
从 v0.4.0+ 开始,pyecharts 重构了渲染的内部逻辑,改善效率。推荐使用以下方式显示多个图表。如果使是 Numpy 或者 Pandas,可以参考这个示例
当然你也可以采用更加酷炫的方式,使用 Jupyter Notebook 来展示图表,matplotlib 有的,pyecharts 也会有的
Note: 从 v0.1.9.2 版本开始,废弃 render_notebook() 方法,现已采用更加 pythonic 的做法。直接调用本身实例就可以了。
比如这样
还有这样
如果使用的是自定义类,直接调用自定义类示例即可
图表配置
图形初始化
通用配置项
xyAxis:平面直角坐标系中的 x、y 轴。(Line、Bar、Scatter、EffectScatter、Kline)
dataZoom:dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)
legend:图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。
lineStyle:带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel)
grid3D:3D笛卡尔坐标系组配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)
axis3D:3D 笛卡尔坐标系 X,Y,Z 轴配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)
visualMap:是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)
markLine&markPoint:图形标记组件,用于标记指定的特殊数据,有标记线和标记点两种。(Bar、Line、Kline)
tooltip:提示框组件,用于移动或点击鼠标时弹出数据内容
toolbox:右侧实用工具箱
图表详细
Bar(柱状图/条形图)
Bar3D(3D 柱状图)
Boxplot(箱形图)
EffectScatter(带有涟漪特效动画的散点图)
Funnel(漏斗图)
Gauge(仪表盘)
Geo(地理坐标系)
GeoLines(地理坐标系线图)
Graph(关系图)
HeatMap(热力图)
Kline/Candlestick(K线图)
Line(折线/面积图)
Line3D(3D 折线图)
Liquid(水球图)
Map(地图)
Parallel(平行坐标系)
Pie(饼图)
Polar(极坐标系)
Radar(雷达图)
Sankey(桑基图)
Scatter(散点图)
Scatter3D(3D 散点图)
ThemeRiver(主题河流图)
TreeMap(矩形树图)
WordCloud(词云图)
用户自定义
Grid 类:并行显示多张图
Overlap 类:结合不同类型图表叠加画在同张图上
Page 类:同一网页按顺序展示多图
Timeline 类:提供时间线轮播多张图
统一风格
注:pyecharts v0.3.2以后,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,可自行安装对应的地图文件包。
地图文件被分成了三个 Python 包,分别为:
全球国家地图:
echarts-countries-pypkg
中国省级地图:
echarts-china-provinces-pypkg
中国市级地图:
echarts-china-cities-pypkg
直接使用python的pip安装
但是这里大家一定要注意,安装完地图包以后一定要重启jupyter notebook,不然是无法显示地图的。
显示如下:
总得来说,这是一个非常强大的可视化库,既可以集成在flask、Django开发中,也可以在做数据分析的时候单独使用,实在是居家旅行的必备神器啊