創作內容

38 GP

selenium練習 - 動態牆自動發文

作者:熾炎之翼│2021-07-17 00:59:15│巴幣:79│人氣:807
度的
今天晚上本來想研究twython
但是發現twitter API要申請Create APP的地方
要用英文填好幾欄200字以上的用途和申請理由之類的東西
我看教學都說不會審核所以就亂打了
送出才發現現在改成要審核了 = =

對 我只能等到他退回再重新申請了
所以我就跑去研究selenium了

我不是第一次接觸selenium
當時的自動搶樓機器人就有差不多一半是用到selenium的函式寫的
但是說真的 當時根本就是縫合怪 = =
大概知道用途就亂貼 but it works


不過後來維護上果然就出現很大問題了
所以這次就決定認真來摸看看

然後剛開始就看到了一個超屌工具 Selenium IDE

這個功能可以讓你輸入一個網址
然後他會打開那個網站
之後你在網站內的所有操作都會被記錄下來並轉成適用於selenium的指令
換言之 只要把你要爬蟲做的事情先手動示範一次
之後這個擴充套件就會生成一個模板
你根本不需要自己去探勘網頁元素

...
突然覺得我之前的搶樓機器人搞這麼久好浪費時間喔
當時用這個大概不到半小時就能馬上生出一個吧 = =

果然學程式不應該偷吃步
腳踏實地才是捷徑@@

然後我就想做個練習
就把目標放到動態牆自動發文

果然用上Selenium IDE就瞬間解決了八成的問題
剩下就是適時用time.sleep()來解決網頁跟不上程式速度的問題
這樣應該就沒問題了吧










這邊出現了一個新的大問題

啊我的字怎麼不見了@@
整個貼文也因此送不出去
一開始以為是我示範時操作有誤
但是多試幾次也是同樣的結果
看來不是我的問題了...

Selenium IDE你算計我!


後來細看程式碼以後
再進行了小實驗 果然與我的猜想沒錯

看到<div>標籤竟然還存在我就知道發生什麼事了

程式直接用JavaScript指令碼把文字以html碼形式貼給網頁
這就造成我的內容變成類似於「請在此輸入文字」的提示文字之類的存在
所以網頁判定我沒有打字 當然就不給我送出

會造成這種狀況是因為IDE以「結果論」來把我的行為轉換成程式碼
對IDE來說 他不是看到我打字 他只有看到我對網頁造成的影響

知道問題就要來解決問題了
我很快就發現對那個框框按Enter鍵就能讓文字現形
但也會讓貼文第一行出現無意義的空行
所以我又想到可以對框框按BACKSPACE鍵
但以這種形式沒指定方位只會刪除最後一個字元

正當我打算找座標時
我又突然產生了新的疑問
直接對框框按BACKSPACE鍵可以讓文字現形嗎

看來只要對文字框框做出更改指令就能讓文字現形
所以我的問題簡化到只要把輸出內容末尾再預留一個任意字元或空格就能解決了

問題解決以後 就完成了我的第一次自動發文實驗

不知道是不是動態牆上第一個由程式發的貼文呢XD


然後我就再試著做的稍微完整一點(其實也就把基本功能補一下
搞了一個比較有實用功能的小程式可以讓有裝selenium的人玩一下
先上程式碼

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import os

UID = input('UID: ')
PW = input('PW: ')

driver = webdriver.Chrome()
driver.get("https://wall.gamer.com.tw/")

driver.find_element(By.ID, "uidh").send_keys(UID)
driver.find_element(By.NAME, "passwdh").send_keys(PW)
driver.find_element(
    By.CSS_SELECTOR, ".form__buttonbar:nth-child(6) > .btn--primary").click()
time.sleep(0.5)
while True:
    os.system('cls')
    content = input('content(換行請打\n): ')
    driver.find_element(By.CSS_SELECTOR, ".sidebar_section_btn-post").click()
    driver.find_element(By.CSS_SELECTOR, ".input-main-editor-content").click()
    time.sleep(0.5)
    element = driver.find_element(
        By.CSS_SELECTOR, ".input-main-editor-content")
    driver.execute_script(
        "if(arguments[0].contentEditable === 'true') {arguments[0].innerText = '"+content+" '}", element)
    driver.find_element(By.CSS_SELECTOR, ".input-main-editor-content").click()
    driver.find_element(
        By.CSS_SELECTOR, ".input-main-editor-content").send_keys(Keys.BACK_SPACE)
    time.sleep(0.5)
    driver.find_element(By.CSS_SELECTOR, ".btn").click()
    driver.execute_script("window.scrollTo(0,0)")
    time.sleep(0.5)
    driver.find_element(By.CSS_SELECTOR, ".btn-primary").click()

一開始需要輸入你的帳密

隨便亂打的 不要照做 = =

我剛剛的測試都是直接寫好在code裡讓程式自己填
不過這邊就需要客製化一點

然後用了os.system('cls') (把終端機頁面清空)來保護隱私和保持界面整潔
然後接下來就是填文字內容
 
這邊沒啥限制 主要就是跳脫字元要特別注意
比如最基礎的換行是\n 斜線是\\ 單引號是\' 之類的

為了使用更方便一點 可以讓程式不是單次使用
我這邊套了無限迴圈
然後之前打的os.system('cls') 這時又可以來讓終端機畫面保持簡潔
然後就能不斷在框框打文了來無CD瘋狂刷廢文了

基本上是這樣的小程式
畢竟只是隨便做做 功能也是頗鳥
首先感覺也不能算自動 感覺只是程式代你發文而已
目前也只能發文字不能上傳文字、不能標註人和作品等等
要加這些功能我再用IDE去調一下code就可以實現
而且模板生出來以後 就能結合其他程式來進行一些應用
比如剛剛我想到的預約發文、定時上傳資料等等真正實現自動化的功能

總之用途多多
但是今天只是小練習而已 就沒打算做太多了
這次研究差不多就這樣了
感謝觀看~



引用網址:https://home.gamer.com.tw/TrackBack.php?sn=5210540
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 20 篇留言

咪胖の植物園
什麼時候可以幫我修改戶政事務所的資料
我跟りお結婚了

07-17 01:02

熾炎之翼
你都結婚了就不用修改吧...07-17 01:05
兆C
那個圖笑死

07-17 01:22

熾炎之翼
每個人coding總會遇到的事情07-17 01:38
費玟
BUT IT WORKS!!!
恭喜你發現了真理wwwww

07-17 01:31

熾炎之翼
以前這種情況發生了挺多次的XDD07-17 01:39
費玟
話說原來twitter API申請這麼麻煩 幹
大概是怕被人拿去亂用申請假帳號自動發文bot吧…又好像有點不太意外

07-17 01:33

熾炎之翼
不知道 反正現在整個很麻煩 = =07-17 01:39
薑絲

07-17 01:35

熾炎之翼
還好 小練習而已07-17 01:39
CRosSinGuTかかか

07-17 01:49

熾炎之翼
否否07-17 02:20
結城ちわ
佬 跪...

07-17 02:07

熾炎之翼
可是你是早稻田學霸.jpg 07-17 02:21
凜子
才華洋溢...

07-17 02:16

熾炎之翼
?07-17 02:21
超稀有S級食材魩仔魚
所以我可以用這個發文 然後說被盜ㄇ

07-17 02:17

熾炎之翼
你被你自己盜帳的部分嗎07-17 02:21
三個月換一次小熊 ♪
佬...
我到現在還不會爬蟲

07-17 03:25

熾炎之翼
學長你一學就能橫著爬吧…07-17 10:06
你麻痺的打的是友軍!
好猛喔

07-17 06:12

熾炎之翼
還好啦 只是這個selenium功能太強大07-17 10:07
BUG
佬...

07-17 06:37

熾炎之翼
07-17 10:07
無鹽粄條
好佬

07-17 07:29

熾炎之翼
板條比較佬…07-17 10:07
村村
長知識了

07-17 08:49

熾炎之翼
Selenium除了慢以外真的沒啥缺點07-17 10:08
我的巴哈超爛
您可以跟場外的異音同學成為雙佬了

07-17 08:57

熾炎之翼
差多了 異音輾壓我十條街…07-17 10:09
ㄅㄅ(想吃麻糬 mode
佬...
是說你怎麼在巴哈放程式碼的

好酷

07-18 17:12

熾炎之翼
有網站能夠幫你調 再放到發文原始碼就好了
你可以參考這篇https://forum.gamer.com.tw/C.php?bsn=60292&snA=487907-18 17:36
ㄅㄅ(想吃麻糬 mode
感恩!

07-18 18:35

熾炎之翼
不客氣07-18 20:28
LOVe高橋李依
看起來很不錯
最近我也在學這個
希望短期內能寫出自動gp的程式xd

07-19 06:02

熾炎之翼
加油 用爬蟲絕對做得到07-19 09:43
玥晴 Luna (#ΦωΦ#)

07-19 21:19

熾炎之翼
還可以啦07-19 21:25
OMai95(田勝傑強姦犯)


11-29 11:02

我要留言提醒:您尚未登入,請先登入再留言

38喜歡★h32902227 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:2021/07/16 生... 後一篇:2021/07/17 生...

追蹤私訊切換新版閱覽

作品資料夾

chinchin2628巴友們
看更多我要大聲說15小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】