日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

零基础带你用python模拟淘宝登录

發布時間:2023/12/14 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 零基础带你用python模拟淘宝登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經過一段時間的學習,并參考各路大神的文章,總結出一些比較適合小白的網絡爬蟲的小技巧。跟著筆者的思路,循序漸進,可以慢慢找到一點小感覺。

開發環境

筆者選用的是vs code,輕量級,支持各種插件安裝。

  • 首先進入官網,下載python安裝包,這里有一點要注意:默認下載是64位的python,建議從以下入口進入:

    點擊進入后,拉到最下面,可以選擇64/32位的python安裝。安裝的時候,要勾選Add Python x.x.x To Path(可省去手動配置環境變量),然后一路默認安裝即可。
  • 去官網下載vs-code,一路默認安裝即可。
  • 在vs-code中搜索python,選擇第一項,安裝python模塊。

配置環境和依賴項

安裝第三方庫

pyhon之所以受歡迎,得益于它的高效,簡而言之,就是借助大量的第三方庫。而且,很多強大的功能庫,都提供支持python的api接口。

  • 在cmd下執行pip install selenium,selenium是一款WEB自動化工具,主要用于網絡爬蟲、模擬登錄等。
  • 在cmd下執行pip install pyautogui,pyautogui有點類似于按鍵精靈,主要用于模擬人操作鼠標和鍵盤,可完美破解一些大型網站會有反爬機制。
  • 在cmd下執行pip install pylint,pylint主要用于發現并分析編碼中的錯誤。
  • 在cmd下執行pip install flake8,flake8主要用于規范python編碼格式。
  • 在cmd下執行pip install PyExecJS,PyExecJS用于解析js格式文件,可用來清洗數據;

配置VS-CODE

  • 設置tab 4字節縮進
    • File - Preferences - Setting(快捷鍵:Ctrl+,),選擇user選項卡
    • 打開json文件,在}之前添加代碼(保存好設置,重啟vs code即可生效):
    "editor.detectIndentation": false, "editor.tabSize": 4, //vscode設置的縮進量 "editor.formatOnSave": false, //保存時候自動格式化,不建議設置。我在這里設置為false
  • 在vs code中配置pylint和flake8
    • File - Preferences - Setting(快捷鍵:Ctrl+,),選擇Worksapce選項卡
    • 打開json文件,添加如下代碼(保存即可,不用重啟):
    {"python.linting.flake8Enabled": true,"python.formatting.provider": "yapf","python.linting.flake8Args": ["--max-line-length=248"],"python.linting.pylintEnabled": false }
  • 將按兩次F5運行,改為按一次
    • 切換到Run選項卡,添加配置,打開lanuch.json,添加如下代碼:
    {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Python: 當前文件","type": "python","request": "launch","program": "${file}","console": "integratedTerminal","stopOnEntry": false}] }

    安裝WebDriver

    基礎學習

    在學習過程中參考了很多好的資料,在此分享給大家。

    • Python Selenium庫的使用:
      (1)https://blog.csdn.net/weixin_36279318/article/details/79475388
      (2)http://www.testclass.net/selenium_python/
      (3)https://selenium-python.readthedocs.io/index.html
    • 新手用vs code編寫代碼,經常報一些警告,可參考:
      http://www.panxiaonan.cc/emlog/post-28.html
    • 網上一些模擬淘寶登錄的文章
      (1)https://blog.csdn.net/weixin_43407092/article/details/102975955
      (2)https://blog.csdn.net/weixin_46089319/article/details/107861077?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-15&spm=1001.2101.3001.4242

    模擬淘寶登錄

  • 打開淘寶網
  • from selenium import webdriver from time import sleep# 定義一個淘寶類 class TaoBao(object):def __init__(self):self.browser = webdriver.Chrome()self.domain = 'http://www.taobao.com'def open(self):self.browser.get(self.domain)sleep(3)# main函數入口 if __name__ == "__main__":tb = TaoBao()tb.open()
  • 元素定位
    按F12進入控制臺,定位到賬號和密碼輸入框的位置
  • 用selenium定義元素的api,這里推薦三個,其中find_element_by_xpath最常用

    # 獲取賬號編輯框,此處id和name一致純屬巧合 self.browser.find_element_by_id('fm-login-id') self.browser.find_element_by_name('fm-login-id') self.browser.find_element_by_xpath('//*[@id="fm-login-id"]')

    為什么說通過xpath獲取最常用呢,因為xpath是精準定位,且能直接拷貝獲得。

    定位其它網頁元素,方法類似,不再贅述。

  • 滑塊驗證
    前面有提到過,selenium可以模擬用戶點擊。
  • # 找到滑塊位置 slider = self.browser.find_element_by_xpath("//span[contains(@class, 'btn_slide')]") if slider.is_displayed():# 拖拽滑塊self.action_chains.drag_and_drop_by_offset(slider, 258, 0).perform()time.sleep(0.5)# 釋放滑塊,相當于點擊拖拽之后的釋放鼠標self.action_chains.release().perform()
  • pyautogui模擬人工點擊
    前面有提到過,淘寶有反爬機制,能檢測到selenium的模擬點擊,會導致登錄失敗。那么,我們就借助pyautogui模擬人工點擊。
    • 首先,用截圖工具截圖登錄按鈕的圖片(最好用電腦自帶的)
    • pyautogui可以根據這張圖片,找到登錄按鈕的位置,從而操作鼠標去點擊
    coords = pyautogui.locateOnScreen('1.png')x, y = pyautogui.center(coords)pyautogui.leftClick(x, y)
  • 登錄結果校驗
    點擊登錄按鈕后,我們并不能直觀的判斷是否登錄成功。此時,我們可以再次打開淘寶頁面,查看用戶名是否存在。
    • 找到用戶名的顯示位置
    • 獲取用戶名,因為site-nav-user不一定存在,故需要用try處理異常
    def get_nickname(self):self.browser.get(self.domain)time.sleep(0.5)try:return self.browser.find_element_by_class_name('site-nav-user').textexcept NoSuchElementException:return ''
  • 最終代碼
  • from selenium import webdriver from time import sleep from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import WebDriverException from selenium.webdriver import ActionChains import pyautogui import pymsgbox pyautogui.PAUSE = 0.5# 定義一個淘寶類 class TaoBao(object):def __init__(self):self.browser = webdriver.Chrome()self.domain = 'http://www.taobao.com'self.browser.maximize_window() # 窗口最大化self.browser.implicitly_wait(5)def open(self):self.browser.get(self.domain)sleep(1)def login(self, usrname, passwd):self.browser.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click() # 點擊登錄按鈕self.browser.find_element_by_xpath('//*[@id="fm-login-id"]').send_keys(usrname) # 輸入賬號self.browser.find_element_by_xpath('//*[@id="fm-login-password"]').send_keys(passwd) # 輸入密碼# 若出現滑塊,需要模擬滑動sleep(1)try:# 出現驗證碼,滑動驗證slider = self.browser.find_element_by_xpath("//span[contains(@class, 'btn_slide')]")if slider.is_displayed():# 拖拽滑塊ActionChains(self.browser).drag_and_drop_by_offset(slider, 258, 0).perform()sleep(0.5)# 釋放滑塊,相當于點擊拖拽之后的釋放鼠標ActionChains(self.browser).release().perform()except (NoSuchElementException, WebDriverException):pass# 模擬人工點擊try:coords = pyautogui.locateOnScreen('1.png')x, y = pyautogui.center(coords)pyautogui.leftClick(x, y)except TypeError:pymsgbox.alert('未找到登錄按鈕')# 驗證登錄結果nickname = self.get_nickname()if nickname:pymsgbox.alert('登錄成功,呢稱為:' + nickname)def get_nickname(self):self.browser.get(self.domain)sleep(0.5)try:return self.browser.find_element_by_class_name('site-nav-user').textexcept NoSuchElementException:return ''# main函數入口 if __name__ == "__main__":tb = TaoBao()tb.open()usrname = 'lgtxxxxxx'passwd = 'xxxxxx'tb.login(usrname, passwd)

    總結

    以上是生活随笔為你收集整理的零基础带你用python模拟淘宝登录的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。