欧美国产高清污视频在线观看-欧美久久综合九色综合-国产黄色自拍网站在线-国产三级精品三级在专区精-97中文字幕一区二区-大吊操白虎学生妹逼-精品久久久久亚洲综合网-青青草原国产av一区欧美-国产在线一区二区三区在线

百度情感分析api 輸入太多 百度情感分析api


百度情感分析api 輸入太多 百度情感分析api



優(yōu)質(zhì)文章,第一時間送達(dá)!
閱讀文本大概需要 15 分鐘 。
1 目 標(biāo) 場 景
最近發(fā)現(xiàn)有一個微信好友,我的每一條朋友圈動態(tài),無論什么時候發(fā)布,發(fā)布的什么內(nèi)容,點贊列表總有它的身影 。
這不禁讓我陷入一種沉思 , 是否我也能做一個機(jī)器人 , 第一個時間給暗戀的小姐姐朋友圈點贊 , 是不是也能拉動我們之間的距離 。
作為技術(shù)人 , 肯定首先想的是如何實現(xiàn)的,實現(xiàn)這個功能的主流方案就下面 3 種,分別是:自動化、無障礙服務(wù)、Xposed 插件 。
本篇文章帶大家利用 Python 自動化實現(xiàn)這一騷操作 。
2 編 寫 代 碼
在開始編寫代碼之前,需要做下面的準(zhǔn)備工作
  • Android 開發(fā)環(huán)境
  • 本機(jī)安裝 Node.js
  • npm 命令安裝Appium Server
  • 安裝 Python 依賴包
  • 百度情感分析API
  • 開啟 Appium 服務(wù)
1、安裝 Node.js2、安裝 Appiumnpm install -g appium3、打開appium服務(wù),并開啟服務(wù)便于調(diào)試appium -g /appium.log4、百度情感分析API依賴pip3 install baidu-aip5、安裝Python依賴pip3 install Appium-Python-Client下面通過 7 步完成這個功能 , 分別是:打開微信、進(jìn)入朋友圈入口、
首次滑動處理、獲取每條動態(tài)的內(nèi)容、操作點贊、可變數(shù)據(jù)參數(shù)化、異常處理 。
第 1 步,打開微信
我們利用 adb 命令獲取微信應(yīng)用的包名及入口 Activity , 通過數(shù)據(jù)線連接電腦,獲取到設(shè)備 id,編寫 Appium 配置文件 。
配置文件caps = {"platformName":"Android","deviceName":"ca2b3455",設(shè)備id"appPackage":com.tencent.mm,微信包名"appActivity":com.tencent.mm.ui.LauncherUI,微信入口Activity"autoGrantPermissions": True,"noReset": True不重置應(yīng)用}然后,WebDriver 就能通過上面的配置文件打開微信 App 了 。
根據(jù)配置文件,驅(qū)動應(yīng)用打開self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)隱式等待微信主頁完全加載self.driver.implicitly_wait(10)第 2 步 , 進(jìn)入朋友圈入口
只需要找到首頁的「發(fā)現(xiàn)」Tab , 執(zhí)行點擊操作,接著點擊「朋友圈」文本控件,即能進(jìn)入到朋友圈主界面 。
由于從點擊到朋友圈頁面完全加載需要一個不確定的時間,這里使用一個顯式等待 , 直到朋友圈「動態(tài)列表元素」加載可見 。
def__open_friend_circle(self):"""打開朋友圈:return:"""點擊發(fā)現(xiàn)Tabfind_element_by_id_and_text(self.driver,self.tag_id["id_page_main_discover"],self.tag_text["discover"]).click進(jìn)入朋友圈find_element_by_text(self.driver,self.tag_text["friend_circle"]).clickdef__wait_for_appear(self,id):"""等待某個元素出現(xiàn):paramid::return:"""顯式等待 30s,直到元素出現(xiàn)WebDriverWait(self.driver, 30).until(EC.visibility_of_element_located((By.ID,id)))self.__wait_for_appear(self.tag_id[id_page_friend_circle_listview])第 3 步,首次滑動處理
由于屏幕分辨率的差異,部分小屏手機(jī)可能第一條動態(tài)在界面上可能展示不全 , 直接處理會產(chǎn)生異常,為了保證處理的完整性 , 需要做一次滑動預(yù)處理 。
比如:下圖的第一條動態(tài)只有發(fā)布者和發(fā)布內(nèi)容可見,發(fā)布時間不可見 。
安裝正版系統(tǒng)和其它軟件的補(bǔ)丁和更新,能對運行中的軟件錯誤進(jìn)行更改 , 使計算機(jī)用戶免受或者減少損失 。
我們只需要拿到「第一條動態(tài)元素」的 y 軸坐標(biāo),向上對應(yīng)的距離,這樣第一條動態(tài)就完全展示出來了 。
defswipe_first(self, id_listview):"""首次滑動:param param::return:"""element_listview = self.driver.find_element_by_id(id_listview)由于動態(tài)Item從ListView的第二子元素開始,獲取到第一個子元素的高度element_content = element_listview.find_element_by_class_name("android.widget.LinearLayout")獲取元素的屬性size = element_content.size滑動一次由于滑動因為滑動速度存在誤差,這里滑動距離需要做一下處理swipe_up_with_distance(self.driver, size.get("height") - 50, 1000)time.sleep(2)需要注意的是,由于滑動過快時,滑動距離會存在誤差,這里對滑動距離稍微做了一下處理 。
第 4 步,獲取每條動態(tài)的內(nèi)容
曲軸位置傳感器怎么判斷好壞?曲軸傳感器壞了汽車還能開嗎想要去判斷曲軸位置傳感器的好壞,首先去查看儀表盤上有沒有發(fā)動機(jī)故障燈亮 , 這是最明顯的癥狀 。而車輛表現(xiàn)出來的癥狀是啟動不了車 。
動態(tài)的內(nèi)容分為純文本、其他(圖片、視頻、鏈接、音樂等)、文本 其他三種形式 。
我們獲取到:動態(tài)的發(fā)布者、發(fā)布時間、發(fā)布文本內(nèi)容 。
def __get_dynamic_content(self, element):"""獲取動態(tài)的類型:param element::return:"""文字的id:注意:不確定是否存在的元素,要使用find_elements_**,否則會拋出異常element_titles = element.find_elements_by_id(self.tag_id[id_page_friend_circle_item_title])好友名element_author = element.find_element_by_id(self.tag_id[id_page_friend_circle_item_friend_name])發(fā)布時間注意:可能沒法找到,導(dǎo)致異常element_publish_time = element.find_element_by_id(self.tag_id[id_page_friend_circle_item_publish_time])author_name = element_author.get_attribute("text")publish_time = element_publish_time.get_attribute("text")content = Noneif len(element_titles) >0:content = element_titles[0].get_attribute(text)返回發(fā)布者、發(fā)布時間、發(fā)布內(nèi)容returnauthor_name, publish_time, content第 5 步,操作點贊
根據(jù)上面獲取的內(nèi)容,去判斷這條動態(tài)是否值得我們?nèi)c贊 。
如果本條動態(tài)的發(fā)布內(nèi)容不為空 , 我們就采用百度的情感分析 API去分析內(nèi)容的積極性 。
fromaipimportAipNlpdef get_word_nlp(word):"""判斷內(nèi)容是否為消極的:param word::return:"""""" 你的 APPID AK SK """APP_ID =xxAPI_KEY =xxxSECRET_KEY =xxxxclient = AipNlp(APP_ID, API_KEY, SECRET_KEY)""" 調(diào)用情感傾向分析 """result = client.sentimentClassify(word)該情感搭配的極性(0表示消極 , 1表示中性,2表示積極)sentiment = result.get("items")[0].get("sentiment")return sentiment == 0過濾掉消極內(nèi)容和已經(jīng)點過贊的動態(tài),其他每一條動態(tài)都執(zhí)行點贊操作 。
如果文本存在,并且是消極的,就不處理ifdynamic_contents[2] and get_word_nlp(dynamic_contents[2]):print(消極的內(nèi)容,不點贊!)continue點擊,彈出點贊按鈕element_perform_click(element,self.tag_id[id_page_friend_circle_approve_button_pre])不點贊的情況:已經(jīng)點過贊、有文字內(nèi)容并且為消極未點贊:贊;已贊:取消ifapprove_text ==取消:關(guān)閉點贊彈框print(已經(jīng)點贊過 , 不點贊)element_perform_click(element,self.tag_id[id_page_friend_circle_approve_button_pre])continue注意,點贊按鈕沒法執(zhí)行點擊操作,需要往上找父類元素執(zhí)行點擊操作element_perform_click(self.driver,self.tag_id[id_page_friend_circle_approve_button])處理完一頁動態(tài)之后,接著可以循環(huán)滑動頁面去查找動態(tài)列表,繼續(xù)上面的操作 。
whileTrue:elements =self.driver.find_elements_by_id(id_item).... 循環(huán)操作滑動一次swipe_up(self.driver, 500)time.sleep(2)第 6 步 , 可變數(shù)據(jù)參數(shù)化
為了保證后期的可維護(hù)性,對文中查詢的 id、文本等元素寫入到y(tǒng)aml配置文件中 。
tag:id:id_page_main_discover:com.tencent.mm:id/cw2主頁:發(fā)現(xiàn)按鈕id_page_friend_circle_listview:com.tencent.mm:id/e2p朋友圈頁面:動態(tài)列表id_page_friend_circle_item:com.tencent.mm:id/e6t朋友圈頁面:每一項動態(tài)id_page_friend_circle_item_title:com.tencent.mm:id/e6x朋友圈頁面:動態(tài)標(biāo)題文本id_page_friend_circle_item_friend_name:com.tencent.mm:id/azl朋友圈頁面:動態(tài)的發(fā)布者id_page_friend_circle_item_publish_time:com.tencent.mm:id/e25朋友圈頁面:動態(tài)發(fā)布時間id_page_friend_circle_approve_button_pre:com.tencent.mm:id/e2c朋友圈頁面:動態(tài)點贊入口按鈕id_page_friend_circle_approve_status:com.tencent.mm:id/e1l朋友圈頁面:動態(tài)點贊狀態(tài)文本(贊或者取消)id_page_friend_circle_approve_button:com.tencent.mm:id/e1k朋友圈頁面:每一個動態(tài)的點贊按鈕text:discover:發(fā)現(xiàn)friend_circle:朋友圈后期一旦微信版本升級迭代,只需要更改此處代碼即可 。
第 7 步,異常處理
上面的代碼如果不做異常處理 , 直接運行很有可能會出現(xiàn)各類異常 , 下面逐一進(jìn)行說明 。
首尾動態(tài)處理:當(dāng)前界面第一條動態(tài)和最后一條動態(tài)中的部分元素不可見 。
針對這個問題 , 需要考慮是在頂部還是尾部 。如果在頂部,繼續(xù)處理下一條動態(tài);如果在尾部,直接跳出本次循環(huán) 。
forindex, element in enumerate(elements):try:dynamic_contents =self.__get_dynamic_content(element)exceptExceptionase:err_tag ="頭部元素"ifindex ==0else"尾部元素"err ="**********%s產(chǎn)生一個異常**********"% err_tagprint(err)logging.error(err)logging.error(traceback.format_exc)判斷是頁面的第一個元素還是最后一個元素if index == 0:continueelse:break元素不可點擊:可以往上查找父級元素,直到找到一個可以點擊的元素 , 直接點擊操作 。
defelement_perform_click(parentElement, id):"""某個元素執(zhí)行點擊操作:param parentElement:WebDriver或者WebElement:param id:待查找的元素id:return:"""element = parentElement.find_element_by_id(id)判斷是否可以點擊element_clickable = element.get_attribute("clickable")if element_clickable:element.clickreturn如果當(dāng)前元素不可以點擊 , 一直向上找可以點擊的父類元素,執(zhí)行點擊操作while True:element = element.parentif element.get_attribute("clickable"):element.clickbreak元素不可見:有些元素在執(zhí)行點擊操作的時候,不可見 。
這個問題只需要捕獲異常,滑動小距離之后,再次執(zhí)行點擊操作即可 。
deffb_id(driver: WebDriver, parentElement, element_id):"""通過id查找元素:param driver::param parentElement 父元素中查找:param element_id::return:"""whileTrue:try:注意:查找單個元素經(jīng)常容許產(chǎn)生異常 , 這里進(jìn)行捕獲后 , 然后滑動一次,繼續(xù)查找element = parentElement.find_element_by_id(element_id)return elementexcept:print(查找元素:【%s】產(chǎn)生異常,滑動一次,再進(jìn)行查找! % element_id)swipe_up_small(driver, 500)3 結(jié) 果 結(jié) 論
通過上面的 7 步操作,就能完成了一個有感情的朋友圈點贊機(jī)器人 。
我已經(jīng)將全部源碼上傳到后臺,關(guān)注公眾號后回復(fù)「點贊」即可獲得全部源碼 。
如果你覺得文章還不錯,請大家點贊分享下 。你的肯定是我最大的鼓勵和支持 。
回復(fù)下方「關(guān)鍵詞」,獲取優(yōu)質(zhì)資源
回復(fù)關(guān)鍵詞「pybook03」 , 立即獲取主頁君與小伙伴一起翻譯的《Think Python 2e》電子版
回復(fù)關(guān)鍵詞「入門資料」,立即獲取主頁君整理的 10 本 Python 入門書的電子版
回復(fù)關(guān)鍵詞「m」 , 立即獲取Python精選優(yōu)質(zhì)文章合集
回復(fù)關(guān)鍵詞「」,將數(shù)字替換成 0 及以上數(shù)字,有驚喜好禮哦~
題圖:pexels,CC0 授權(quán) 。
好文章,我在看
【百度情感分析api 輸入太多 百度情感分析api】問題的背面:有一個知名的企業(yè)家 , 他在北大上大學(xué)時,有一個堅定的目標(biāo):要在北大找一個女朋友 。可他性格靦腆 , 社交能力也不太好,交女友對他來說簡直太難了 。那時,騰訊早已推出QQ 。企業(yè)家突然想到,通過QQ去結(jié)識北大的女生 , 但那時QQ還沒有搜索附近的人這個功能 。企業(yè)...

    猜你喜歡