整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          使用JavaScript寫爬蟲

          比Python,JavaScript才是更適合寫爬蟲的語言。原因有如下三個方面:

          • JavaScript異步IO機制適用于爬蟲這種IO密集型任務。JavaScript中的回調非常自然,使用異步網絡請求能夠充分利用CPU。
          • JavaScript中的jQuery毫無疑問是最強悍的HTML解析工具,使用JavaScript寫爬蟲能夠減少學習負擔和記憶負擔。雖然Python中有PyQuery,但終究還是比不上jQuery自然。
          • 爬取結果多為JSON,JavaScript是最適合處理JSON的語言。

          一、任務:爬取用戶在Github上的repo信息

          通過實例的方式學習爬蟲是最好的方法,先定一個小目標:爬取github repo信息。入口URL如下,我們只需要一直點擊next按鈕就能夠遍歷到用戶的所有repo。

          https://github.com/{{username}}?tab=repositories

          獲取repo之后,可以做什么?

          • 統計用戶最常使用的語言,統計用戶語言使用分布情況統計用戶所獲取的star數,fork數

          二、爬蟲雙股劍:axios和jQuery

          axios是JavaScript中很常用的異步網絡請求庫,相比jQuery,它更輕量、更專業。既能夠用于瀏覽器端,也可以用于Node。它的語法風格是promise形式的。在本任務中,只需要了解如下用法就足夠了:

          axios.get(url).then((resp) => {
           請求成功,處理resp.data中的html數據
          }).catch((err) => {
           請求失敗,錯誤處理
          })
          

          請求之后需要處理回復結果,處理回復結果的庫當然是用jQuery。實際上,我們有更好的選擇:cheerio。

          在node下,使用jQuery,需要使用jsdom庫模擬一個window對象,這種方法效率較低,四個字形容就是:笨重穩妥。

          如下代碼使用jQuery解析haha.html文件

          fs = require("fs")
          jquery=require('jquery')
          jsdom=require('jsdom') //fs.readFileSync()返回結果是一個buffer,相當于byte[] 
          html = fs.readFileSync('haha.html').toString('utf8') 
          dom= new jsdom.JSDOM(html) 
          $=jquery(dom.window) console.log($('h1'))
          

          cheerio只實現了jQuery中的DOM部分,相當于jQuery的一個子集。cheerio的語法和jQuery完全一致,在使用cheerio時,幾乎感覺不到它和jQuery的差異。在解析HTML方面,毫無疑問,cheerio是更好的選擇。如下代碼使用cheerio解析haha.html文件。

          cheerio=require('cheerio')
          html=require('fs').readFileSync("haha.html").toString('utf8')
          $=cheerio.load(html)
          console.log($('h1'))
          

          只需20余行,便可實現簡單的github爬蟲,此爬蟲只爬取了一頁repo列表。

          var axios = require("axios")
          var cheerio = require("cheerio")
          axios.get("https://github.com/weiyinfu?tab=repositories").then(resp => {
           var $ = cheerio.load(resp.data)
           var lis = $("#user-repositories-list li")
           var repos = []
           for (var i = 0; i < lis.length; i++) {
           var li = lis.eq(i)
           var repo = {
           repoName: li.find("h3").text().trim(),
           repoUrl: li.find("h3 a").attr("href").trim(),
           repoDesc: li.find("p").text().trim(),
           language: li.find("[itemprop=programmingLanguage]").text().trim(),
           star: li.find(".muted-link.mr-3").eq(0).text().trim(),
           fork: li.find(".muted-link.mr-3").eq(1).text().trim(),
           forkedFrom: li.find(".f6.text-gray.mb-1 a").text().trim()
           }
           repos.push(repo)
           }
           console.log(repos)
          })
          

          三、更豐富的功能

          爬蟲不是目的,而是達成目的的一種手段。獲取數據也不是目的,從數據中提取統計信息并呈現給人才是最終目的。

          在github爬蟲的基礎上,我們可以擴展出更加豐富的功能:使用echarts等圖表展示結果。

          要想讓更多人使用此爬蟲工具獲取自己的github統計信息,就需要將做成一個網站的形式,通過搜索頁面輸入用戶名,啟動爬蟲立即爬取github信息,然后使用echarts進行統計展示。網站肯定也要用js作為后端,這樣才能和js爬蟲無縫銜接,不然還要考慮跨語言調用。js后端有兩大web框架express和koa,二者API非常相似,并無優劣之分,但express更加流行。

          如上設計有一處用戶體驗不佳的地方:當啟動爬蟲爬取github信息時,用戶可能需要等待好幾秒,這個過程不能讓用戶干等著。一種解決思路是:讓用戶看到爬蟲爬取的進度或者爬取過程。可以通過websocket向用戶推送爬取過程信息并在前端進行展示。展示時,使用類似控制臺的界面進行展示。

          如何存儲爬取到的數據呢?使用MongoDB或者文件都可以,最好實現兩種存儲方式,讓系統的存儲方式變得可配置。使用MongoDB時,用到js中的連接池框架generic-pool。

          整個項目用到的庫包括:

          • express:后端框架
          • cheerio+axios:爬蟲
          • ws:websocket展示爬取過程
          • webpack:打包工具
          • less:樣式語言
          • echarts:圖表展示
          • vue:模板渲染
          • jquery:DOM操作
          • mongodb:存儲數據
          • generic-pool:數據庫連接池

          試用地址:

          https://weiyinfu.cn/githubstatistic/search.html?

          案例地址:https://github.com/weiyinfu/GithubStatistic

          原文鏈接:https://zhuanlan.zhihu.com/p/53763115

          剛,記者從杭州市發改委獲悉,2022年春節期間留杭省外員工電子消費券申報工作,將于明天(1月18日)8:00開始,至1月24日21:00截止;異議處理申請于1月25日12:00截止。

          申報通道根據員工參保情況,分為2個:

          用人單位申報:職工社保或工程建設項目工傷保險的參保人員,由用人單位通過PC端在“親清在線”平臺申報。

          靈活就業個人申報:靈活就業參保人員由個人通過手機端在浙里辦APP“親清在線”應用申報。

          具體怎么申報?一起來看!

          1.登錄親清在線

          路徑1:在“浙江省政務服務網”(https://www.zjzwfw.gov.cn)首頁“親清在線”欄目進入;

          路徑二:瀏覽器直接訪問https://qinqing.hangzhou.gov.cn,進入親清在線。

          打開“親清在線”首頁,在右上角按【登錄】,選擇【法人登錄】,使用浙江政務網高級實名認證賬號、法人數字證書、電子營業執照等方式登錄。

          2.進入政策

          登錄后,在“惠企政策”頁,找到置頂政策“春節期間留杭省外員工電子消費券發放”,點擊【兌現】。

          如跳出“賬號等級不夠或未授權”提示框,說明當前賬號不符合申報要求,請根據提示提升賬號等級或由更高賬號進行授權操作。

          3.查閱政策

          進入政策后可查閱政策內容,點擊【申報】進入政策申報頁面。

          以下申報單位將無法進入申報頁面,如與事實不符可聯系親清D小二:

          ①申報單位是國企、事業單位和非杭州企業;

          ②申報單位無法判斷是否在杭(企業、個體工商戶、社會組織);

          ③申報單位未在杭納稅。

          4.政策申報

          第一步:確認企業信息無誤后,可直接添加申領補貼的員工。

          添加員工支持單條錄入和批量錄入兩種方式:

          ①單條錄入:點擊【添加員工】進行添加。【員工姓名】框支持使用姓名模糊查詢滿足參保和非浙條件的參保員工信息,選中后將自動補全對應信息,填報人員補充員工手機號即可完成填報;也可直接手動錄入員工信息。

          ②批量錄入:【下載待申報數據】Excel電子表格(名單中包含滿足參保和非浙條件的員工信息),根據員工留杭情況對表格人員進行增刪處理,并補充員工手機號碼。確保表格內只保留需申報的員工信息,點擊【批量導入】上傳表格。(批量導入數據單次最大支持200條,支持連續上傳多個表格)

          添加成功后,員工將展示在下方申報列表中。

          注:個人證件類型支持以下幾種,填報須使用與繳納社保時使用的證件類型一致,否則存在社保無記錄的問題:

          (1)身份證;

          (2)護照;

          (3)其他:含港澳臺居民來往內地通行證、港澳臺居民居住證、外國人永久居留證、護照等

          第二步:在申報列表勾選員工,點擊【閱讀并簽署《承諾函》】。

          第三步:點擊頁面上方的【提交兌現】,即完成申報操作。

          5.申報記錄查看

          點擊【兌現記錄】,可查看申報記錄的進度及狀態。

          6.申報成功

          申報單狀態為“申報成功”,即表示該員工已通過審核。員工會收到通過審核的短信通知。

          ***,感謝您積極響應杭州市委市政府的倡議,將最好的時光留在杭州。請您于1月28日-2月6日期間,使用尾號“***”的證件號碼實名登錄“云閃付”APP領取新春留杭消費券(下載APP:app.95516.com;操作說明:https://article.95516.com/eq/ls/H9aryasG.html)。“親清在線”預祝您在杭州度過一個平安幸福年!

          7.異議申請

          申報單狀態未通過的,可點擊【查看詳情】查看不通過的原因。

          不通過原因有兩種:

          (1)未查到2021年12月度當前員工在杭社保或工傷險繳納記錄。

          (2)當前員工不符合非浙戶籍。

          若是因為員工信息填寫錯誤造成未通過,可以點擊【修改員工信息】更正員工姓名和手機號。

          若對不通過原因有異議,可點擊【提交異議】上傳證明材料發起異議申請(異議處理不通過后不能再發起,還未處理的異議申報人可撤銷)。

          8.處理記錄

          異議經政府端審批后返回審批結果,可在處理記錄里查看詳細說明。

          9.親清攻略

          親清在線在頁面頂端的“親清攻略”可查閱操作手冊和常見問題。

          ?下載與登錄

          通過應用市場或政務服務網(www.zjzwfw.gov.cn/zjzw/zj/zw_pc_download) 下載浙里辦APP。個人實名登錄浙里辦后,在“杭州市本級”站點首頁腰線處可見“親清在線”入口或直接搜索“親清在線”。

          本端提供:

          ①靈活就業參保人員申報;

          ②企業員工查看本人是否通過審核。

          ? 查看政策

          進入置頂政策“春節期間留杭省外員工電子消費券發放”,查看閱讀政策內容,系統根據當前用戶自動顯示不同功能。靈活就業參保人員顯示【申報】按鈕,可進入申報;單位參保員工顯示【查看】按鈕,可查閱審批通過情況。

          ? 申報政策

          如當前用戶符合靈活就業參保、非浙戶籍(2021年12月31日)、有效在杭居住證等條件,將顯示以下頁面,個人選中承諾事項后,提交申報即可完成申報。

          如不符合以上條件,系統將根據情況返回以下三種提示:

          ? 異議申請

          不符合2021年12月份靈活就業參保條件的需上傳個人參保證明、非浙戶籍證明、在杭居住證等掃描件或清晰照片。

          提出異議經人工審批后將返回結果。

          ? 查看申報結果

          如完成申報的,可查看申報記錄。單位申報和個人申報結果都在此處展示。

          用人單位為員工申報的狀態

          個人申報的狀態

          ? 申報關閉

          1月24日21點后申報將關閉;1月25日12點后異議申請將關閉。

          如申報中還遇到其他問題

          咨詢服務看這里

          NO.1 線上咨詢

          本政策頁面右側設置D小二咨詢圖標。點擊開啟后,申報單位可通過即時對話方式在線與親清D小二進行互動交流,支持發送圖文信息、在線查看常見問題等服務。

          本次電子消費券咨詢開通時間為1月18-25日,其中人工客服時間:1月18日-21日8:00-21:00,1月22日-23日為8:00-19:00,1月24日-25日為8:00-21:00。D小二響應時間在3分鐘以內。若D小二因過于忙碌無法及時回復消息,申報單位可以選擇留言,留言將生成工單由D小二處理。

          NO.2 熱線咨詢

          • 政策咨詢熱線:96345。提供政策申報方面問題咨詢。服務時間從2022年1月12日起至活動結束。

          • 消費券客服熱線:銀聯7×24小時專屬客服熱線95516。服務時間從1月28日至2月底。提供消費券領取、使用、退款等相關問題的咨詢和處理。

          常見問題

          1.登錄賬號等級無法辦理

          本政策需要具備二級以上實名認證賬號進行操作,對應經辦人認證等級2級以上,即1級、2級賬號可以直接申報本政策。如出現登錄賬號等級無法辦理的提示,可進入右上角【我的企業】【我的信息】-【經辦人授權】查看賬號等級。

          1級經辦人指通過電子數字證書及電子營業執照登錄的企業賬號。2級經辦人指在浙江政務服務網完成高級實名認證的賬號。

          如需要使用3級賬號申報,可通過1級或2級賬號給3級賬號單獨授權本政策申報權限。選中經辦人給您的賬號授權。

          2.經辦人信息不完善

          使用數字證書或電子營業執照登錄親清平臺,在事項辦理中,可能會出現經辦人信息不完善的提示:

          可點擊“我的企業”“修改手機號”補全經辦人手機號信息。

          3.批量導入失敗/添加失敗

          通過【批量導入】導入Excel表格,員工信息出現缺失字段或人員重復等問題將會跳出以下提示。

          4.港澳臺、外籍靈活就業參保人員

          無法登錄浙里辦申報的

          港澳臺、外籍在杭參加靈活就業社保的,如無法正常使用浙里辦,請往電子郵箱bgs@fzw.hz.gov.cn寄送本人簽名的留杭承諾函照片進行報名,審核情況將以郵箱回復。承諾函模板可點擊此鏈接下載:《港澳臺及外籍在杭靈活就業參保人員春節期間個人留杭承諾函》。

          謂多行文本輸入控件,就是網頁表單中,因輸入內容較多需換行顯示的文本輸入控件,一般為textarea元素。很多富文本輸入框也是對textarea進行包裝。

          <textarea name="Content" rows="8" style="width: 380px"></textarea>

          多選文本輸入框


          自動填寫多行文本輸入控件的五種方法
          1、通過修改元素屬性填表
          textarea元素比較特殊,在html中直接指定value屬性值是無效的。修改textarea元素的text屬性,可以實現自動填表,但要求textarea元素未被腳本賦值的情況下text才有效。修改text屬性不會觸發元素綁定的事件,但在木頭瀏覽器填寫項目中,可以明確指定填表前和填表后需要觸發的事件。

          修改元素屬性


          2、由系統向瀏覽器發送數據
          在window系統下,這幾乎是一個萬能的方法,支持中文輸入,獲得控件元素后,填寫屬性設置為KeyboardSend。在自動輸入前,瀏覽器會自我激活為當前活動窗口,同時把輸入焦點轉移到設定的多行文本控件上。在輸入過程中,不能手工干預,不能讓控件失去焦點,也不能切換到別的程序窗口。輸入遠程會觸發控件綁定的事件代碼。

          系統向瀏覽器發送內容


          3、模擬人工鍵盤操作
          獲取元素后,把填寫屬性設置為Keyboard,能達到人工按下實體鍵盤一樣的效果,因此不能輸入中文,執行時同樣會自動激活瀏覽器窗體,輸入焦點轉移到多選文本控件上。輸入過程中會觸發元素綁定的相關事件。

          模擬人工按鍵


          4、模擬鍵盤事件
          在不按下鍵盤的情況下,直接產生按鍵事件作用于當前活動窗口,獲取元素后設置填寫屬性為KeyboardEvent。與模擬人工操作效果一樣,自動激活瀏覽器窗體,定位輸入焦點到多行文本控件上才能完成輸入,亦不支持中文輸入,會觸發元素控件綁定的腳本事件。

          發送鍵盤事件


          5、執行腳本代碼控制輸入
          在項目管理窗口中,創建一個腳本代碼的步驟,執行JavaScript代碼修改textarea的value屬性值。注意:textarea雖然在html中沒有value屬性,但在JavaScript代碼中是支持的。不管textarea是否被賦初值,都不影響腳本執行填表效果。

          document.getElementsByTagName("textarea")[0].value="木頭軟件";

          也可以使用JQuery代碼,只要勾選【引入JQuery】,瀏覽器自動引用JQuery庫
          $("textarea").eq(0).val("木頭軟件");

          腳本填表多行文本框


          執行以上腳本輸入內容后,不會觸發控件綁定的事件,如有必要,可以在代碼中主動調用相關的事件處理代碼。也可以再添加一個填表步驟項目來主動觸發事件代碼執行。


          主站蜘蛛池模板: 中文字幕AV一区二区三区 | 国产一区二区三区不卡在线观看| 亚洲日韩AV一区二区三区中文 | 国产一区二区三区视频在线观看| 精品久久久久久中文字幕一区| 日本一区高清视频| 国产亚洲情侣一区二区无码AV | 91秒拍国产福利一区| 国产激情一区二区三区小说| 日本一区二区三区在线网| 国偷自产Av一区二区三区吞精| 3d动漫精品一区视频在线观看| 日韩精品免费一区二区三区 | 国产一区二区精品久久岳√| 激情内射日本一区二区三区| 亚洲国产精品一区二区三区在线观看| 国产一国产一区秋霞在线观看| 久久久精品人妻一区二区三区| 国模大胆一区二区三区| 国产一区二区三区在线看| 欧美av色香蕉一区二区蜜桃小说| 亚洲一区二区三区无码影院| 97se色综合一区二区二区| 精品国产一区二区三区2021| 亚洲一区二区三区乱码在线欧洲| 成人无码一区二区三区| 在线视频国产一区| 中文字幕视频一区| 超清无码一区二区三区| 精品日韩一区二区| 91在线精品亚洲一区二区| 久久亚洲中文字幕精品一区四 | 一区二区三区无码被窝影院| 任你躁国产自任一区二区三区| 无码人妻aⅴ一区二区三区有奶水 人妻夜夜爽天天爽一区 | 国产一区麻豆剧传媒果冻精品| 国产成人精品一区二区A片带套| 久久免费区一区二区三波多野| 国产乱码精品一区二区三 | 国产麻豆精品一区二区三区v视界| 国产品无码一区二区三区在线|