csdn自動サインインアプレット
1つは、python + seleniumの開発
Tanstyより
githubアドレス:https : //github.com/Tansty/CSDN-signup
gitteアドレス:https ://gitee.com/tansty/CSDN-signup
1.ログインページ
(1)まず公式サイトに入る
(2)クリックしてログイン
2.ログイン操作を実行する
(1)まず、ログインするにはアカウントのパスワードをクリックする必要があります
要素を見つけるためのステートメントを作成する
driver.find_element_by_link_text("账号密码登录").click()
(2)ユーザー名とパスワードを入力します
(3)要素を確認する
ユーザー名:
パスワード:
対応するステートメントを作成し、CSSセレクターを使用して選択します
driver.find_element_by_css_selector("[placeholder='手机号/邮箱/用户名']").send_keys(user)
driver.find_element_by_css_selector("[placeholder='密码']").send_keys(password)
入力成功
(4)ログインボタンをクリック
driver.find_element_by_css_selector("button").click()
入力するにはクリックしてください
3.チェックイン操作を実行する
(1)ここでは、アバターをクリックするとパーソナルセンターにジャンプし、新しいWebページにアクセスする機能を直接構築することがわかります。
new_window='window.open("{}")'.format("https://i.csdn.net/#/uc/profile")#js函数,此方法适用于所有的浏览器
driver.execute_script(new_window)
入力に成功しました
(2)サインインページにジャンプします
ここでは、各ボタンのWebリンクが異なるため、直接jsを使用して新しいWebページにジャンプします
new_window = 'window.open("{}")'.format("https://i.csdn.net/#/uc/reward") # js函数,此方法适用于所有的浏览器
driver.execute_script(new_window)
(3)サインインを完了する
実験後、サインインと完了したサインインのクラス属性が異なることが判明しました
チェックインされていません:handle_box to_sign
チェックインが完了しました:handle_box has_signを描画
できます:handle_box to_reward
構築コード
try:
elem=driver.find_element_by_xpath("//div[@class='handle_box has_sign']")
except:
print("您有可能还未签到或可以抽奖")
else:
messagebox.showinfo("错误", "您已经签到过了")
driver.quit()
sys.exit(1)
#如果已经完成签到就退出
try:
elem=driver.find_element_by_xpath("//div[@class='handle_box to_reward']")
except:
print("您还未签到")
else:
messagebox.showinfo("恭喜", "您可以去抽奖了")
driver.quit()
sys.exit(1)
#提示可以抽奖
try:
elem=driver.find_element_by_xpath("//div[@class='handle_box to_sign']")
except:
messagebox.showinfo("错误", "没有找到对应的元素")
driver.quit()
sys.exit(1)
else:
elem.click()
正常にサインイン
2.対応する知識ポイントの要約
1.要素の選択方法
find_element_by_class_name:クラスに従って検索
find_element_by_css_selector:CSSによると
find_element_by_id:IDに従って検索
find_element_by_link_text:リンクのテキストに従って検索します
find_element_by_name:ノード名に基づいて検索
find_element_by_partial_link_text:テキスト全体に含まれている限り、リンクのテキストに従って検索します
find_element_by_tag_name:タグで検索
find_element_by_xpath:Xpathを使用して検索します
PS:要素を要素に変更すると、すべての適格な要素が検索され、リストが返されます
比如:find_elements_by_class_name
返されるのはweb_elementオブジェクトです
2.ブラウザウィンドウの切り替え
ブラウザーウィンドウを切り替えて新しいWebページにジャンプする必要がある場合、それ以外の場合は元のWebページを検索し、エラーを報告します
for handle in driver.window_handles:
driver.switch_to.window(handle)
if "个人" in driver.title:
break
元に戻る
# mainWindow变量保存当前窗口的句柄
mainWindow = wd.current_window_handle
現在のWebページのハンドルを保存して、後で戻ることができるようにします
3. jsステートメントの実行
new_window = 'window.open({}")'.format("https://i.csdn.net/#/uc/reward") # js函数,此方法适用于所有的浏览器
driver.execute_script(new_window)
4.tkinter
このプロジェクトで採用された方法:
def set_init_window(self):
self.init_window_name.title("CSDN自动签到") #标题
self.init_window_name.geometry() #设置窗口大小,设置窗口位置
self.init_label=Label(self.init_window_name,text="账号: ")
self.init_label.grid()#x=0,y=0
self.user=Entry(self.init_window_name) #创建输入框
self.user.grid(row=0,column=1)
self.init_label2=Label(self.init_window_name,text="密码: ")
self.init_label2.grid(row=1,column=0)
self.password=Entry(self.init_window_name)
self.password.grid(row=1,column=1)
self.w=Button(text="签到", bg="lightblue", width=10,command=self.driver)
self.w.grid()
tkライブラリの具体的な使用:tkinter
著作権に関する声明:この記事はブロガーのオリジナルの記事であり、CC 4.0 BY-SAの著作権契約に従います。転載するには、元のソースリンクとこの声明を添付してください。この記事へのリンク:https://blog.csdn.net/tansty_zh/article/details/108081090