⑴ 爬今日頭條,各種失敗經驗,之後成功了
最近研究了一下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開發中,也可以在做數據分析的時候單獨使用,實在是居家旅行的必備神器啊