本文目錄一覽:
- 1、如何用python 七牛上傳文件
- 2、pip 怎麼安裝lldb
- 3、如何用 Python 爬取需要登錄的網站
- 4、將項目通過git上傳到bitbucket倉庫 (附圖)
- 5、如何在CentOS6上安裝Python2.7和Python3.3
如何用python 七牛上傳文件
首先要安裝一個qiniu的包,下面是示例代碼
from qiniu import Auth, put_data, put_file
accessKey = “xxx”
secretKey = “xxx”
def upload_data(data, bucket_name):
#生成上傳憑證
q = Auth(accessKey, secretKey)
key = str(int(time() * 1000))
token = q.upload_token(bucket_name, key)
#上傳文件
retData, respInfo = put_data(token, key, data)
return ‘xxx.clouddn.com/’ + key
with open(‘meelo.jpg’, ‘rb’) as f:
url = upload_data(f.read(), ‘xxxx’)
會返回上傳文件的url
pip 怎麼安裝lldb
為了使用jupyter notebook 記錄學習python中的代碼和筆記,遂安裝jupyter
使用pip 安裝,因為python環境是新的,缺少很多東西。在安裝過程中,遇到很多問題
1、安裝setuptools 下載地址
下載解壓,在解壓目錄運行命令行
python setup.py install
2、安裝ipython pip install ipython
3、安裝vcforpython27
4、安裝jupyter pip install jupyter
如何用 Python 爬取需要登錄的網站
最近我必須執行一項從一個需要登錄的網站上爬取一些網頁的操作。它沒有我想像中那麼簡單,因此我決定為它寫一個輔助教程。
在本教程中,我們將從我們的bitbucket賬戶中爬取一個項目列表。
教程中的代碼可以從我的 Github 中找到。
我們將會按照以下步驟進行:
提取登錄需要的詳細信息
執行站點登錄
爬取所需要的數據
在本教程中,我使用了以下包(可以在 requirements.txt 中找到):
Python
1
2
requests
lxml
步驟一:研究該網站
打開登錄頁面
進入以下頁面 「bitbucket.org/account/signin」。你會看到如下圖所示的頁面(執行註銷,以防你已經登錄)
仔細研究那些我們需要提取的詳細信息,以供登錄之用
在這一部分,我們會創建一個字典來保存執行登錄的詳細信息:
1. 右擊 「Username or email」 欄位,選擇「查看元素」。我們將使用 「name」 屬性為 「username」 的輸入框的值。「username」將會是 key 值,我們的用戶名/電子郵箱就是對應的 value 值(在其他的網站上這些 key 值可能是 「email」,「 user_name」,「 login」,等等)。
2. 右擊 「Password」 欄位,選擇「查看元素」。在腳本中我們需要使用 「name」 屬性為 「password」 的輸入框的值。「password」 將是字典的 key 值,我們輸入的密碼將是對應的 value 值(在其他網站key值可能是 「userpassword」,「loginpassword」,「pwd」,等等)。
3. 在源代碼頁面中,查找一個名為 「csrfmiddlewaretoken」 的隱藏輸入標籤。「csrfmiddlewaretoken」 將是 key 值,而對應的 value 值將是這個隱藏的輸入值(在其他網站上這個 value 值可能是一個名為 「csrftoken」,「 authenticationtoken」 的隱藏輸入值)。列如:「Vy00PE3Ra6aISwKBrPn72SFml00IcUV8」。
最後我們將會得到一個類似這樣的字典:
Python
1
2
3
4
5
payload = {
“username”: “lt;USER NAMEgt;”,
“password”: “lt;PASSWORDgt;”,
“csrfmiddlewaretoken”: “lt;CSRF_TOKENgt;”
}
請記住,這是這個網站的一個具體案例。雖然這個登錄表單很簡單,但其他網站可能需要我們檢查瀏覽器的請求日誌,並找到登錄步驟中應該使用的相關的 key 值和 value 值。
步驟2:執行登錄網站
對於這個腳本,我們只需要導入如下內容:
Python
1
2
import requests
from lxml import html
首先,我們要創建 session 對象。這個對象會允許我們保存所有的登錄會話請求。
Python
1
session_requests = requests.session()
第二,我們要從該網頁上提取在登錄時所使用的 csrf 標記。在這個例子中,我們使用的是 lxml 和 xpath 來提取,我們也可以使用正則表達式或者其他的一些方法來提取這些數據。
Python
1
2
3
4
5
login_url = “n/?next=/”
result = session_requests.get(login_url)
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath(“//input[@name=’csrfmiddlewaretoken’]/@value”)))[0]
**更多關於xpath 和lxml的信息可以在這裡找到。
接下來,我們要執行登錄階段。在這一階段,我們發送一個 POST 請求給登錄的 url。我們使用前面步驟中創建的 payload 作為 data 。也可以為該請求使用一個標題並在該標題中給這個相同的 url 添加一個參照鍵。
Python
1
2
3
4
5
result = session_requests.post(
login_url,
data = payload,
headers = dict(referer=login_url)
)
步驟三:爬取內容
現在,我們已經登錄成功了,我們將從 bitbucket dashboard 頁面上執行真正的爬取操作。
Python
1
2
3
4
5
url = ‘/overview’
result = session_requests.get(
url,
headers = dict(referer = url)
)
為了測試以上內容,我們從 bitbucket dashboard 頁面上爬取了項目列表。我們將再次使用 xpath 來查找目標元素,清除新行中的文本和空格並列印出結果。如果一切都運行 OK,輸出結果應該是你 bitbucket 賬戶中的 buckets / project 列表。
Python
1
2
3
4
5
tree = html.fromstring(result.content)
bucket_elems = tree.findall(“.//span[@class=’repo-name’]/”)
bucket_names = [bucket.text_content.replace(“n”, “”).strip() for bucket in bucket_elems]
print bucket_names
你也可以通過檢查從每個請求返回的狀態代碼來驗證這些請求結果。它不會總是能讓你知道登錄階段是否是成功的,但是可以用來作為一個驗證指標。
例如:
Python
1
2
result.ok # 會告訴我們最後一次請求是否成功
result.status_code # 會返回給我們最後一次請求的狀態
將項目通過git上傳到bitbucket倉庫 (附圖)
OK,現在bitbucket和android studio上都已經創建好了倉庫!
顯示如下就表示成功了
現在在bitbucket上就可以看到我們的項目源碼了,哈哈,上傳成功!
如何在CentOS6上安裝Python2.7和Python3.3
如何在CentOS 6上同時安裝Python 2.7和Python 3.3
本文將介紹如何在CentOS 6上安裝Python 2.7和3.3。下面以Python 2.7.6和Python 3.3.5為例進行說明,但本人實測該教程同樣適合於Python3.4.0.
CentOS 6自帶了Python 2.6.6(CentOS 7則自帶了Python 2.7)和一些非常好用的功能,如yum。但是,注意不要隨便升級自帶的Python以免yum不可用。 新版本將安裝在/usr/local目錄下以避免和自帶的版本衝突。
雖然「我」只在64位的CentOS 6.5進行了嘗試,但該教程應該適用於所有的CentOS 6版本(本人按此教程在CentOS 7上亦成功安裝Python3.4)。
下面的示例命令您最好以root身份運行或者在命令前加sudo賦予許可權。但注意,若不是以root身份執行的話,make 與make install最好分開執行,並且都在前面加sudo,連著寫,如sudo make make install的話會在make install過程中報許可權不足問題,因為sudo不作用於後面的make install。
安裝前準備
編譯Python之前您最好先安裝一系列的開發工具和一些拓展庫,雖然不是必須的,但這樣Python才能依賴這些工具和拓展庫展示它強悍的功能。下面是利用yum進行工具和拓展庫安裝的示例命令,直接copy執行即可(注意部分命令顯示不全,但可以通過移動游標查看和複製)。
yum groupinstall “Development tools”
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
該考慮的因素
在您編譯和安裝Python之前,有些東西您是應該知道或考慮的。如下。
Unicode編碼
Python編碼問題歷史悠久,但不用過多關注,知道它目前支持Unicode編碼即可(Python3中默認的)。考慮到兼容性等原因,除非有特殊的理由,您最好配置下Python 3.2和更早的版本,使其支持UTF-32編碼,雖然會增加小小的內存代價。在Python 2.7中您可以通過在configure時添加選項 –enable-unicode=ucs4 進行配置,而在Python 3.2中是–with-wide-unicode選項。
Shared library(動態共享庫)
目前大部分的Linux系統自帶的Python都是以共享庫的方式編譯的, 此外,某些第三方工具例如mod_wsgi和Blender,沒有Python的共享庫還運行不了,所以,您最好還是把Python編譯成動態共享庫吧。為了以共享庫方式編譯Python,您必須指明共享庫的路徑。您有兩種選擇:
在configure命令後面添加:LDFLAGS=”-Wl,-rpath /usr/local/lib”從而將庫路徑直接編譯進Python中。
以記事本方式打開 /etc/ld.so.conf ,然後在文件最後添加新行:/usr/local/lib 。緊接著運行命令 /sbin/ldconfig 更新動態鏈接器。 添加後的文件內容在CentOS 6.5 如下:
/etc/ld.so.conf
1
2
include ld.so.conf.d/*.conf
/usr/local/lib
使用 「make altinstall」 而不是make install
切記,在安裝自定義版本的Python時, make altinstall 命令是必須的!如果您使用一般的 make install 命令,呵呵,您將會在解壓編譯的目錄下看到兩個命名一樣但版本不同的python,這有可能會導致一些意想不到的bug哦,具體是什麼作者沒說,我也不知道。
下載,編譯,安裝Python
如下命令可用於下載、編譯和安裝Python。注意,如果您打算安裝後手動修改 /etc/ld.so.conf 文件以更新動態鏈接器,那麼下面的 LDFLAGS 參數您就可以去掉了。
1
2
3
4
5
6
7
8
9
10
11
12
13
# Python 2.7.6:
wget
tar xf Python-2.7.6.tar.xz
cd Python-2.7.6
./configure –prefix=/usr/local –enable-unicode=ucs4 –enable-shared LDFLAGS=”-Wl,-rpath /usr/local/lib”
make make altinstall(此處切記,要麼以root運行,要麼分開執行!)
# Python 3.3.5:
wget
tar xf Python-3.3.5.tar.xz
cd Python-3.3.5
./configure –prefix=/usr/local –enable-shared LDFLAGS=”-Wl,-rpath /usr/local/lib”
make make altinstall(此處切記,要麼以root運行,要麼分開執行!)
執行上述命令之後,您可以在/usr/local/bin/python2.7 或 /usr/local/bin/python3.3 中找到新安裝的Python。而Python 2.6.6則可能在/usr/bin/python, /usr/bin/python2 或 /usr/bin/python2.6找到。
下載和安裝Setuptools + pip
Setuptools 早已取代 Distribute 成為Python官方的拓展包管理器,以用於從Python Package Index安裝拓展功能包。 不同版本的Python需要的Setuptools版本不同。建議您也通過Setuptools安裝 pip,它提供了一些額外在安裝拓展功能包時很有用的功能。
以下的命令可用於安裝最新版Setuptools 和 pip。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# First
get the setup script for Setuptools:
wget
# Then
install it for Python 2.7 and/or Python 3.3:
python2.7ez_setup.py
python3.3ez_setup.py
# Now
install pip using the newly installed setuptools:
easy_install-2.7pip
easy_install-3.3pip
# With
pip installed you can now do things like this:
pip2.7install[packagename]
pip2.7install–upgrade[packagename]
pip2.7uninstall[packagename]
安裝的拓展功能包在 /usr/local/lib/pythonX.Y/site-packages/ 中可以找到(X.Y 是Python的版本號)。
接下來幹嘛?
如果您使用 Python 2.7,強烈建議您安裝 virtualenv 並學會使用它,它可用於創建獨立的 Python 環境。如果您使用 Python 3.3的話就可以省心些,它已被內置了。
不同的 Python 運行環境(也叫沙盒) 可以有自己的 Python 版本和拓展功能包,就是說不同的Python安裝和運行的目錄不同,也可以為每個版本的Python安裝對應的名稱一樣但版本不同的拓展包。 這在開發多個功能不同的項目或在同一個項目中需要用到不同版本的Python是會很有用的。
創建您第一個獨立的Python環境
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Install
virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7installvirtualenv
virtualenv-2.7my27project
# Use
the built-in pyvenv program in Python 3.3 to create a sandbox called my33project:
pyvenv-3.3my33project
# Check
the system Python interpreter version:
python–version
# This
will show Python 2.6.6
# Activate
the my27project sandbox and check the version of the default Python interpreter in it:
sourcemy27project/bin/activate
python–version
# This
will show Python 2.7.6
deactivate
# Activate
the my33project sandbox and check the version of the default Python interpreter in it:
sourcemy33project/bin/activate
python–version
# This
will show Python 3.3.5
deactivate
當你使用 virtualenv創建一個運行沙盒時,它會自動在沙盒環境中為您安裝setuptools和 pip (聽起來不錯,可以還沒嘗試過)。但如果您使用 pyvenv 的話,您就必須自己動手安裝了。也簡單,激活沙盒之後通過運行下載的z_setup.py文件去安裝即可。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/285050.html