一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

分享幾段祖?zhèn)鞯?Python 代碼,拿來直接使用!

 精誠至_金石開 2022-02-06

日期生成

獲取過去 N 天的日期
import  datetime

def  get_nday_list (n) :
    before_n_days = []
    for  i  in  range( 1 , n +  1 )[:: -1 ]:
        before_n_days.append(str(datetime.date.today() - datetime.timedelta(days= i)))
    return  before_n_days

a = get_nday_list( 30 )
print(a)
輸出:
['2021-12-23', '2021-12-24', '2021-12-25', '2021-12-26', '2021-12-27', '2021-12-28', '2021-12-29', '2021-12-30', '2021-12-31', '2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06', '2022-01-07', '2022-01-08', '2022-01-09', '2022-01-10', '2022-01-11', '2022-01-12', '2022-01-13', '2022-01-14', '2022-01-15', '2022-01-16', '2022-01-17', '2022-01-18', '2022-01-19', '2022-01-20', '2022-01-21']
生成一段時(shí)間區(qū)間內(nèi)的日期
import  datetime

def  create_assist_date (datestart = None,dateend = None) :
    # 創(chuàng)建日期輔助表

    if  datestart  is  None :
        datestart =  '2016-01-01'
    if  dateend  is  None :
        date datetime.datetime.now().strftime( '%Y-%m-%d' )

    # 轉(zhuǎn)為日期格式
    datestart=datetime.datetime.strptime(datestart, '%Y-%m-%d' )
    dateend=datetime.datetime.strptime(dateend, '%Y -%m-%d' )
    date_list = []
    date_list.append(datestart.strftime( '%Y-%m-%d' ))
     datestart<dateend:
        # 日期疊加一天
        datestart+=datetime.timedelta(days=+1)
        # 日期轉(zhuǎn)字符串存入列表
        date_list.append(datestart.strftime('%Y-%m-%d'))
    return date_list

d_list = create_assist_date(datestart='2021-12-27', dateend='2021-12-30')
d_list
輸出:
['2021-12-27', '2021-12-28', '2021-12-29', '2021-12-30']

保存數(shù)據(jù)到CSV

保存數(shù)據(jù)到 CSV 是太常見的操作了,分享一段我個(gè)人比較喜歡的寫法
def  save_data (data, date) :
    if  not  os.path.exists( r'2021_data_%s.csv'  % date):
         with  open( '2021_data_%s.csv'  % date,  'a+' , encoding= 'utf- 8' as  f:
            f.write( '標(biāo)題,熱度,時(shí)間,url\n' )
             for  i  in  data:
                title = i[ 'title' ]
                extra = i[ 'extra' ]
                time = i[ 'time' ]
                網(wǎng)址=我[ '網(wǎng)址']
                行 =  '{},{},{},{}' .format(title,extra,time,url)
                f.write(row)
                f.write( '\n' )
    else :
        with  open( '2021_data_%s .csv '  % date,  'a+' , encoding= 'utf-8'as  f:
            for  i  in  data:
                title = i[ 'title' ]
                extra = i[ 'extra' ]
                time = i[ 'time' ]
                網(wǎng)址=我[ '網(wǎng)址' ]
                行 =  '{},{},{},{}'。格式(標(biāo)題,額外,時(shí)間,網(wǎng)址)
                f.write(row)
                f.write( '\n' )

帶背景顏色的 Pyecharts

Pyecharts 作為 Echarts 的優(yōu)秀 Python 實(shí)現(xiàn),受到眾多開發(fā)者的青睞,用 Pyecharts 作圖時(shí),使用一個(gè)舒服的背景也會給我們的圖表增色不少
以餅圖為例,通過添加 JavaScript 代碼來改變背景顏色
def  pie_rosetype (data)  -> Pie:
    background_color_js = (
     'new echarts.graphic.LinearGradient(0, 0, 0, 1, '
    '[{offset: 0, color: '#c86589'}, {offset: 1, color : '#06a7ff'}], false)'
)
    c = (
        Pie(init_opts=opts.InitOpts(bg_color=JsCode(background_color_js)))
        .add(
             '' ,
            data,
            radius=[ '30%' '75% ' ],
            center=[ '45%' '50%' ],
            rosetype= 'radius' ,
            label_opts=opts.LabelOpts(formatter= ': {c}' ),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title= '' ),
                        )
    )
    返回 c

requests 庫調(diào)用

據(jù)統(tǒng)計(jì),requests 庫是 Python 家族里被引用的最多的第三方庫,足見其江湖地位之高大!
發(fā)送 GET 請求
import  requests


headers = {
    'user-agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36' ,
  'cookie''some_cookie'
}
response = requests.request( 'GET' , url, headers=headers)
發(fā)送 POST 請求
import  requests


payload={}
files=[]
headers = {
    'user-agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36' ,
  'cookie''some_cookie'
}
response = requests.request( 'POST' , url, headers=headers, data=payload, files=files)
根據(jù)某些條件循環(huán)請求,比如根據(jù)生成的日期
def  get_data (mydate) :
    date_list = create_assist_date(mydate)
    url =  'https://test.test'
    files=[]
    headers = {
         'user-agent' 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit /537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36' ,
         'cookie' ''
        }
     for  d  in  date_list:
        payload={ 'p' '10' ,
         'day' : d,
         'nodeid':  '1',
         't':  'itemsbydate',
        'c':  'node' }
        for  i  in  range( 1100 ):
            payload[ 'p' ] = str(i)
            print( '獲取頁面 %s 中 %s 的數(shù)據(jù)'  % (d, str(i) ))
            response = requests.request( 'POST' , url, headers=headers, data=payload, files=files)
            items = response.json()[ 'data' ][ 'items' ]
            if  items:
                save_data(items, d)
            其他
                休息

Python 操作各種數(shù)據(jù)庫

操作 Redis

連接 Redis
import  redis


def  redis_conn_pool () :
    pool = redis.ConnectionPool(host= 'localhost' , port= 6379 , decode_responses= True )
    rd = redis.Redis(connection_pool=pool)
    return  rd
寫入 Redis
from  redis_conn  import  redis_conn_pool


rd = redis_conn_pool()
rd.set( 'test_data''mytest' )

操作 MongoDB

連接 MongoDB
from  pymongo  import  MongoClient


conn = MongoClient( 'mongodb://%s:%s@ipaddress:49974/mydb'  % ( 'username''password' ))
db = conn.mydb
mongo_collection = db.mydata

批量插入數(shù)據(jù)
res = requests.get(url, params=query).json()
commentList = res[ 'data' ][ 'commentList' ]
mongo_collection.insert_many(commentList)

操作 MySQL

連接 MySQL
import MySQLdb

# 打開數(shù)據(jù)庫連接
db = MySQLdb.connect('localhost''testuser''test123''TESTDB', charset='utf8' )

# 使用cursor()方法獲取操作游標(biāo) 
cursor = db.cursor()
執(zhí)行 SQL 語句
# 使用 execute 方法執(zhí)行 SQL 語句
cursor.execute('SELECT VERSION()')

# 使用 fetchone() 方法獲取一條數(shù)據(jù)
data = cursor.fetchone()

print 'Database version : %s ' % data

# 關(guān)閉數(shù)據(jù)庫連接
db.close()
輸出:
數(shù)據(jù)庫版本:5.0.45

本地文件整理

整理文件涉及需求的比較多,這里分享的是將本地多個(gè) CSV 文件整合成一個(gè)文件
import  pandas  as  pd
import  os


df_list = []
for  i  in  os.listdir():
    if  'csv'  in  i:
        day = i.split( '.' )[ 0 ].split( '_' )[ -1 ]
        df = pd.read_csv(i)
        df[ 'day' ] = day
        df_list.append(df)
df = pd.concat(df_list, axis= 0 )
df.to_csv( 'total.txt' , index= 0 )

多線程代碼

多線程也有很多實(shí)現(xiàn)方式,我們選擇自己最為熟悉順手的方式即可
import  threading
import  time

exitFlag =  0

class  myThread  (threading.Thread) :
    def  __init__ (self, threadID, name, delay) :
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.delay = delay
    def  run (self) :
        print  ( '開始線程:'  + self.name)
        print_time(self.name, self.delay,  5 )
        print  ( '退出線程:'  + self.name)

def  print_time(threadName, delay, counter) :
    while  counter:
         if  exitFlag:
            threadName.exit() time.sleep
        (delay)
         print  ( '%s: %s'  % (threadName, time.ctime(time.time())))
        counter -=  1

# 創(chuàng)建新線程
thread1 = myThread( 1 'Thread-1' 1 )
thread2 = myThread( 2 'Thread-2' 2 )

# 開啟新線程
1.start()
thread2.start()
thread1.join()
thread2.join()
print  ( '退出主線程' )

異步編程代碼

異步爬取網(wǎng)站
import  asyncio
import  aiohttp
import  aiofiles

async  def  get_html (session, url) :
    try :
        async  with  session.get(url=url, timeout= 8as  resp:
            if  not  resp.status //  100  ==  2 :
                print(resp. status)
                print( '爬取' , url,  '出現(xiàn)錯(cuò)誤' )
            else :
                resp.encoding =  'utf-8'
                text =  await  resp.text()
                return text
    except Exception as e:
        print('出現(xiàn)錯(cuò)誤', e)
        await get_html(session, url)
使用異步請求之后,對應(yīng)的文件保存也需要使用異步,即是一處異步,處處異步
async  def  download (title_list, content_list) :
    async  with  aiofiles.open( '{}.txt' .format(title_list[ 0 ]),  'a' ,
                             encoding= 'utf-8'as  f:
        await  f.write( '{}' .format(str(content_list)))

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    91人妻人人做人碰人人九色| 国产欧洲亚洲日产一区二区| 神马午夜福利免费视频| 午夜视频成人在线观看| 色好吊视频这里只有精| 日本免费一区二区三女| 国产精品内射婷婷一级二级| 中文字幕区自拍偷拍区| 搡老妇女老熟女一区二区| 日韩精品中文字幕在线视频| 亚洲欧美国产网爆精品| 国产不卡最新在线视频| 国产午夜精品福利免费不| 亚洲精品中文字幕一二三| 欧美三级精品在线观看| 国产精品熟女乱色一区二区| 国产精品成人又粗又长又爽| 国产一区一一一区麻豆| 一级欧美一级欧美在线播| 亚洲黄香蕉视频免费看| 欧美不卡高清一区二区三区| 亚洲天堂精品1024| 国产又粗又长又大的视频| 国产高清精品福利私拍| 激情视频在线视频在线视频| 天海翼高清二区三区在线| 经典欧美熟女激情综合网| 亚洲国产成人精品福利| 亚洲婷婷开心色四房播播| 老熟妇2久久国内精品| 日本东京热视频一区二区三区| 日本理论片午夜在线观看| 国产精品不卡免费视频| 日韩精品一区二区三区含羞含羞草| 91亚洲国产日韩在线| 亚洲av熟女一区二区三区蜜桃| 久七久精品视频黄色的| 国产欧美日韩在线一区二区| 日韩精品中文在线观看| 好吊视频一区二区在线| 女厕偷窥一区二区三区在线|