摸魚的功夫,我整理了九個(gè)提高搬磚效率的Python工具
1.Faker生成假數(shù)據(jù)
你若還在為生成名字、地址、IP地址而發(fā)愁,試試Faker庫吧。
它是專業(yè)生成假數(shù)據(jù)的神器,但生成的數(shù)據(jù)看起來又如此“不假”。
基本用法如下所示:
from faker import Faker
fake = Faker(locale="zh_CN")
fake.name()
# '譚柳'
fake.address()
# '江西省關(guān)嶺縣新城趙街Y座 630814'
fake.text()
'怎么作者地區(qū).投資報(bào)告企業(yè)內(nèi)容責(zé)任發(fā)展來源資料.一下自己一次全部社區(qū).\n今天非常由于開發(fā)謝謝.其中大家組織游戲.\n只有最新控制同時(shí)計(jì)劃學(xué)校.分析記者價(jià)格方式.\n成功可能感覺方式包括手機(jī).中國(guó)重要這種比較必須中心我的.\n公司很多安全類別威望一種.標(biāo)題部門全國(guó)文件日本帖子積分不同.\n工程這個(gè)其中銷售歷史可以.對(duì)于感覺全國(guó)發(fā)生國(guó)內(nèi)不是.單位用戶新聞成為.留言本站說明報(bào)告工作繼續(xù).'
2.Pendulum管理時(shí)間
使用日期和時(shí)間格式從來都不是一件有趣的事情。
盡管內(nèi)置的datetime模塊做得相當(dāng)不錯(cuò),但有一個(gè)更直觀的Pendulum,能做到快速處理。
它支持時(shí)區(qū)轉(zhuǎn)換、日期、時(shí)間操作和格式設(shè)置。
如下是一個(gè)快速示例,快速創(chuàng)建1個(gè)上海時(shí)區(qū)的時(shí)間:
from datetime import datetime
import pendulum
sh = pendulum.timezone('Asia/Shanghai')
shc = pendulum.now()
print('Current Date Time in sh =', shc)
# DateTime(2021, 12, 9, 16, 38, 52, 599942, tzinfo=Timezone('Asia/Shanghai'))
shc.add(years=1)
# DateTime(2022, 12, 9, 16, 38, 52, 599942, tzinfo=Timezone('Asia/Shanghai'))
3.Scrapy 做爬蟲
Scrapy是一個(gè)強(qiáng)大的工具,可以讓你從網(wǎng)站上快速提取信息。
當(dāng)需要從多個(gè)網(wǎng)站或網(wǎng)頁中提取大量信息時(shí),手動(dòng)提取是低效的。
Scrapy提供了易于使用的方法和包,可以使用HTML標(biāo)記或CSS類提取信息。通過以下命令安裝scrapy:
pip install scrapy
然后直接在終端輸入下面一行代碼,
scrapy fetch --nolog https://baidu.com
就能得到百度的首頁html內(nèi)容。
4.使用Pandas數(shù)據(jù)分析
Pandas是一個(gè)簡(jiǎn)單但功能強(qiáng)大的數(shù)據(jù)分析工具。使用它可以進(jìn)行數(shù)據(jù)清洗,并對(duì)其進(jìn)行統(tǒng)計(jì)分析。
分析完數(shù)據(jù)后,還可以使用外部庫(如[Matplotlib])將其可視化(https://github.com/matplotlib/matplotlib)。
Pandas最棒的地方是它建在NumPy上面,NumPy是一個(gè)強(qiáng)大的數(shù)據(jù)分析工具,因?yàn)镻andas基于它,所以這意味著大多數(shù)NumPy方法都是Pandas中已有的函數(shù)。
5.click命令行工具
click是一個(gè)Python包,可用于創(chuàng)建命令行接口,相當(dāng)漂亮的命令行,相當(dāng)絲滑。
讓我們看一個(gè)例子:
"""
click 模塊演示
"""
.command()
.option('--count', default=3)
.option('--name', prompt='輸入你的名字:')
def hello(count, name):
for x in range(count):
print(f"Hello {name}!")
if __name__ == "__main__":
hello()
hello函數(shù)公開了兩個(gè)參數(shù):count和name。最后,在命令行,直接這樣調(diào)用腳本:
python click_hello.py --count=5
最后打?。?/p>
輸入你的名字:: zhenguo
Hello zhenguo!
Hello zhenguo!
Hello zhenguo!
Hello zhenguo!
Hello zhenguo!
6.微web框架Flask
需要設(shè)置web服務(wù)器嗎?
你有兩秒鐘的時(shí)間嗎?因?yàn)檫@就是用Python啟動(dòng)簡(jiǎn)單web服務(wù)器所需的時(shí)間,直接下面一行代碼:
python -m http.server 8000
但對(duì)于一個(gè)基本的web應(yīng)用程序來說,這可能太簡(jiǎn)單了。Flask是一個(gè)用Python構(gòu)建的微web框架。它是“微型”的,因?yàn)樗鼪]有任何數(shù)據(jù)庫抽象層、表單驗(yàn)證或郵件支持。
幸運(yùn)的是,它有大量的擴(kuò)展,可以即插即用,如果只想提供一個(gè)簡(jiǎn)單的API,那么它就是完美的。
要使用Flask創(chuàng)建API服務(wù)器,請(qǐng)使用以下腳本:
from flask import Flask
from flask import jsonify
app = Flask(__name__)
.route('/')
def root():
return jsonify(
app_name="zhenguo的小工具",
app_user="zhenguo"
)
使用下面一行代碼啟動(dòng)服務(wù):
FLASK_APP=flask.py flask run
最后,當(dāng)您在瀏覽器中訪問URLhttp://127.0.0.1:5000/時(shí),
應(yīng)該會(huì)看到以下JSON:
{"app_name":"zhenguo的小工具","app_user":"zhenguo"}
7.API請(qǐng)求Requests
Requests是一個(gè)強(qiáng)大的HTTP庫。有了它,可以自動(dòng)化任何與HTTP請(qǐng)求相關(guān)的操作,包括API自動(dòng)化調(diào)用,這樣你就不必再手動(dòng)進(jìn)行調(diào)用。
它附帶了一些有用的特性,如授權(quán)處理、JSON/XML解析和會(huì)話處理。
如下獲取明文地址:北京市海淀區(qū)清華東路35號(hào),對(duì)應(yīng)的經(jīng)緯度時(shí),使用百度地圖接口,免費(fèi)注冊(cè)得到一個(gè)apk,返回經(jīng)緯度結(jié)果如下所示:
import requests
import re
rep = requests.get(
'https://api.map.baidu.com/geocoding/v3/?address=北京市海淀區(qū)清華東路35號(hào)&output=json&ak=你的apk&callback=showLocation')
print(re.findall(r'"lng":(.*),"lat":(.*?)}', rep.text))
# 結(jié)果顯示
[('116.35194130702107', '40.00664192889596')]
8.自動(dòng)化測(cè)試Selenium
Selenium是一個(gè)編寫自動(dòng)化測(cè)試用例的測(cè)試框架。
盡管它是用Java編寫的,Python包提供對(duì)幾乎所有Selenium函數(shù)的類似API的訪問。
Selenium通常用于自動(dòng)化應(yīng)用程序UI的測(cè)試,但您也可以使用它自動(dòng)化機(jī)器上的任務(wù),如打開瀏覽器、拖放文件等。
看一個(gè)快速示例,演示如何打開瀏覽器并訪問百度主頁:
from selenium import webdriver
import time
browser = webdriver.Chrome(executable_path ="C:\Program Files (x86)\Google\Chrome\chromedriver.exe")
website_URL ="https://baidu.com/"
brower.get(website_URL)
refreshrate = int(15)
# 一直保持運(yùn)行
while True:
time.sleep(refreshrate)
browser.refresh()
現(xiàn)在,該腳本每15秒刷新瀏覽器中的百度主頁。
9.圖像處理Pillow
很多時(shí)候,需要以某種方式修改圖像,使其更適合,例如模糊細(xì)節(jié)、組合一個(gè)或多個(gè)圖像或創(chuàng)建縮略圖。
將自制的Pillow腳本與Click組合在一起,然后直接從命令行訪問它們,這對(duì)于加快重復(fù)的圖像處理任務(wù)非常有用。
看一個(gè)模糊圖像的快速示例:
from PIL import Image, ImageFilter
try:
original = Image.open("python-logo.png")
# Blur the image
blurred = original.filter(ImageFilter.BLUR)
# Display both images
original.show()
blurred.show()
blurred.save("blurred.png")
except:
print('未能加載圖像')