1. 程式人生 > 實用技巧 >前幾天買了雲伺服器,這幾天安裝個python3環境,跑個selenium

前幾天買了雲伺服器,這幾天安裝個python3環境,跑個selenium

1 一個結合檔案傳送,命令列,監控一體化的連結工具支援跨平臺 http://www.hostbuf.com/?install_fs

按照順序雙擊即可

2 命令列安裝python(root身份),命令完全相容centos7.6https://www.linuxidc.com/Linux/2018-07/153286.htm

3 安裝虛擬環境,此處有些小插曲,記錄如下

安裝虛擬機器必要環境

可以先更新下pip

pip install --upgrade pip

sudo pip install virtualenv

sudo pip install virtualenvwrapper

安裝結束就啟動虛擬環境(如果不行可以重複操作)

source virtualenvwrapper.sh

建立虛擬環境(py3_flask是虛擬環境名字)

mkvirtualenv -p python3 py3_flask

檢視虛擬環境(可用tab按鈕,快捷方便)

workonpy3_flask

退出虛擬環境

deactivate

刪除虛擬環境(先退出才能刪除)

rmvirtualenv py3_flask

檢視虛擬環境新安裝的包

pip freeze

4 這幾天用本地軟體跑selenium,網路不穩定,我都忘了我還有個雲主機閒著。今天部署下

  安裝chrome

  yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

  檢視版本

  在上面有83.0.4103.116-1

  下載chromedriver找對應版本   https://npm.taobao.org/mirrors/chromedriver/

  wget http://npm.taobao.org/mirrors/chromedriver/83.0.4103.39/chromedriver_linux64.zip

  

  將下載的檔案解壓,放在如下位置   unzip chromedriver_linux64.zip   mv chromedriver /usr/bin/   賦予許可權

  chmod +x /home/mysoft/spyder/chromedriver

  

  編輯py檔案  此處給出一個可以正常執行的檔案示例

  

#! /usr/bin/python3

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()

# 不載入圖片,加快訪問速度
chrome_options.add_experimental_option("prefs", {"profile.mamaged_default_content_settings.images": 2})

# 此步驟很重要,設定為開發者模式,防止被各大網站識別出來使用了Selenium
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])

chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--disable-dev-shm-usage')
browser = webdriver.Chrome(options=chrome_options)
url = "https://www.baidu.com/"
browser.get(url)
html = browser.find_element_by_xpath("//*").get_attribute("outerHTML")
print(html)
print("-----------------------------------")

  

記錄幾個報錯

chrome not run,,,,,, 可能是chromeoption設定不好,參照以上程式碼

No such file or directory xxxx 可能是沒有許可權 chmod u+x xxxx

如果還有其他不可描述的錯誤。比如語法沒錯,但是就是通不過,可能是python縮排有問題,花費兩三分鐘統一下格式

檢視正在執行的python程式  ps -ef | grep python

找到程序id 殺死程序    kill -9 4394

selenium的鍵盤按鍵的正確用法   https://www.jianshu.com/p/56e1295b031f  

eg:driver.find_element_by_id('DomainName').send_keys("{ENTER}")

------------恢復內容開始------------

1 一個結合檔案傳送,命令列,監控一體化的連結工具支援跨平臺 http://www.hostbuf.com/?install_fs

按照順序雙擊即可

2 命令列安裝python(root身份),命令完全相容centos7.6https://www.linuxidc.com/Linux/2018-07/153286.htm

3 安裝虛擬環境,此處有些小插曲,記錄如下

安裝虛擬機器必要環境

可以先更新下pip

pip install --upgrade pip

sudo pip install virtualenv

sudo pip install virtualenvwrapper

安裝結束就啟動虛擬環境(如果不行可以重複操作)

source virtualenvwrapper.sh

建立虛擬環境(py3_flask是虛擬環境名字)

mkvirtualenv -p python3 py3_flask

檢視虛擬環境(可用tab按鈕,快捷方便)

workonpy3_flask

退出虛擬環境

deactivate

刪除虛擬環境(先退出才能刪除)

rmvirtualenv py3_flask

檢視虛擬環境新安裝的包

pip freeze

4 這幾天用本地軟體跑selenium,網路不穩定,我都忘了我還有個雲主機閒著。今天部署下

  安裝chrome

  yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

  檢視版本

  在上面有83.0.4103.116-1

  下載chromedriver找對應版本   https://npm.taobao.org/mirrors/chromedriver/

  wget http://npm.taobao.org/mirrors/chromedriver/83.0.4103.39/chromedriver_linux64.zip

  

  將下載的檔案解壓,放在如下位置   unzip chromedriver_linux64.zip   mv chromedriver /usr/bin/   賦予許可權

  chmod +x /home/mysoft/spyder/chromedriver

  

  編輯py檔案  此處給出一個可以正常執行的檔案示例

  

#! /usr/bin/python3

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()

# 不載入圖片,加快訪問速度
chrome_options.add_experimental_option("prefs", {"profile.mamaged_default_content_settings.images": 2})

# 此步驟很重要,設定為開發者模式,防止被各大網站識別出來使用了Selenium
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])

chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--disable-dev-shm-usage')
browser = webdriver.Chrome(options=chrome_options)
url = "https://www.baidu.com/"
browser.get(url)
html = browser.find_element_by_xpath("//*").get_attribute("outerHTML")
print(html)
print("-----------------------------------")

  

記錄幾個報錯

chrome not run,,,,,, 可能是chromeoption設定不好,參照以上程式碼

No such file or directory xxxx 可能是沒有許可權 chmod u+x xxxx

如果還有其他不可描述的錯誤。比如語法沒錯,但是就是通不過,可能是python縮排有問題,花費兩三分鐘統一下格式

檢視正在執行的python程式  ps -ef | grep python

找到程序id 殺死程序    kill -9 4394

selenium的鍵盤按鍵的正確用法   https://www.jianshu.com/p/56e1295b031f  

eg:driver.find_element_by_id('DomainName').send_keys("{ENTER}")

記錄幾個xpath的操作

    driver.find_element_by_id('DomainName').clear()
time.sleep(0.2 * random.random())
driver.find_element_by_id('DomainName').send_keys("%s.com\n" % (li))
driver.find_element_by_id('DomainName').send_keys("{ENTER}")

WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CLASS_NAME, 'search-write-btn')))
# tag_element = driver.find_element_by_class_name('search-write-btn')
# ActionChains(driver).move_to_element(tag_element).perform().click()
time.sleep(0.5 + 0.2 * random.random())
# driver.find_element_by_class_name('search-write-btn').click()
# js ="document.getElementByClass('search-write-btn').click()"  # js點選元素
# driver.execute_script(js)

# 顯示等待知道元素出現
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CLASS_NAME, 'search-write-btn')))
html = driver.find_element_by_xpath("//*").get_attribute("outerHTML")

write_to_html(str(i),html)
result = driver.find_element_by_xpath("//*[contains(text(), '未被註冊')]") 

記錄幾個重新整理介面的方法https://www.cnblogs.com/MasterMonkInTemple/p/4097512.html

在linux程式設計中,如果檔案中用到當前目錄,則應該cd 到指定目錄下,不然程式會報路徑找不到錯誤,另一種解決方式是在程式中獲取當前路徑,然後拼接

python中出現invalid syntax報錯的幾種原因

縮排不對,或者符號錯誤(某些無法描述的錯誤就是縮排不對)

目前還有一個奇葩錯誤

list' object has no attribute 'get'

問題是我用的是drivert.get(url) 並不是獲取elements元素導致的錯誤,

解決方法:將except中異常處理的程式碼(driver.get(url))想辦法放到try中。

某次點選按鈕無法使用,解決辦法:在輸入框後面拼接字串"\n" 不知為何,在win中執行很好,但是在linux下各種報錯。