前幾天買了雲伺服器,這幾天安裝個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下各種報錯。