Python, sizin için "Ben bir ilaç tanrısı değilim" analizini yapmak için 5000'den fazla veri parçası kullanır! (Kod ile)

Kaynak: 51CTO Technology Stack

Yazar: Liu

Bu makale toplam 1400 kelimedir, okumanız tavsiye edilir 6 dakika.

Bu makale sizi Douban, Maoyan, Taopiao Piao ve diğer web sitelerinde "Ben Tıp Tanrısı Değilim" bilgisini taramaya ve Python ile analiz etmeye götürür.

"I'm Not the God of Medicine", Wen Muye tarafından yönetilen, Xu Zheng, Wang Chuanjun, Zhou Yiwei, Tan Zhuo, Zhang Yu, Yang Xinming, vb .'nin oynadığı bir komedi filmi. 6 Temmuz 2018'de Çin'de gösterime girdi.

Film vizyona girmeden önce, filmin geniş çaplı tıklama oranı yüksek bir popülerlik ve ağızdan ağza yayıldı. 9 Temmuz sabahı itibariyle: Douban skoru: 9.0 puan, Maoyan: 9.7 puan, Taoping oyları: 9.5 puan, Mtime: 8.8 puan .

Neden bu üç web sitesini söylüyorum? Bugün bundan yaklaşık 5000+ kısa yorum verisine sahip olduğumuz için, profesyonel verileri kullanmak daha ikna edici.

Birkaç şirketten kapsamlı veriler: Beş yıldızlı tavsiye o kadar yüksek ki, yaşam ortamı gerçek, duygular gerçek, ikilem gerçek ve hatta kadın kahraman bile gerçek kırışıklıkları olan gerçek bir yaşlı güzellik! Gerçeklik, sürükleyici bir deneyim getirebilir. Yüzeyde ilaç, ama derinlerde hayat.

Tıp hastalıkları tedavi edebilir, ancak hayat istemsizdir. Çin'in dibinde hayatın acısı ve haysiyetiyle yüzleşir ve sosyal sistemlere ve iş kurallarına yönelik işkenceden kaçmaz.Bu, filmin Çin'in gerçekliğine ve popüler yankının özüne girmesinin anahtarıdır.

Refahın uyarıları, ancak insanlar umut görebiliyor, bu filmin 2018'deki en heyecan verici konu olması çok muhtemel. Douban'ın ilk 9.0 yüksek skorlu filminin yayınlanmamasından 16 yıl sonra olmasının nedeni bu olabilir.

Bugün hangi bölgelerin ve ne tür insanların bu filmi beğendiğini analiz etmek için 5000'den fazla veri kullanıyoruz.

Cheng Yong, kutsal Hint petrolünü satan bir seyyar satıcıdır ve hayatı gayet iyidir. Babanın hemanjiyomu ameliyat için acele ediyordu ve parasız hastaneye kaldırıldı.Karısı, oğlunu kalkınma için yurt dışına götürmek zorunda kaldı.Hint yağları satarak kazandığı para, elektrik faturalarını bile ödeyemezdi ve her yerde paraya ihtiyacı vardı.

Gizemli adam Lu Yiyi, Cheng Yong'u bulur ve ondan Hindistan'dan bir ilaç satın almasına yardım etmesini ister. Lu Yiyi, kan kanserinden muzdariptir ve tedavi için uzun vadeli anti-kanser ilaçlarına ihtiyaç duyar.

Gerçek ilaç "Swiss Grenin" çok pahalı ve sıradan insanlar onu tedarik edemiyor ama Hindistan'da jenerik ilaç "Indian Grenin" var ama fiyatı sadece 1/20 ama Çin'de yasak bir uyuşturucu ... Kaçakçılık yakalandı. Yasal sorumluluğu üstlenin.

Büyük çıkarların güdüsüyle Sihui, rahip ve Huang Mao art arda sahneye çıktı ve uyuşturucu satan beş kişi başarılı bir şekilde bir ekip oluşturdu ve bir "ilaç satıcısı" oldu.

Hastalar için, hayatta kalma şansı buldular ve Cheng Yong'a birbiri ardına flama verdiler ve o zamandan beri ona "tıp tanrısı" adını verdiler.

Ajan tarafından satın alınan uyuşturucularla ilgili bir sorun vardı ve sahte uyuşturucu satıcısı Zhang Changlin'in ortaya çıkması, Cheng Yong'u tutuklanacağından korkarak tehdit etti, uyuşturucu satış ekibi resmen dağıldı.

Cheng Yong fabrikayı açtı, Lu Yiyi öldü, Zhang Changlin kaçtı, Cheng Yong'un ilk dönüşümü tamamlamasına izin verdi, birçok hastanın yiyecek hiçbir ilacı yoktu, Cheng Yong tekrar Hindistan'a gitti ve ilaç satmak için ekibi yeniden kurdu.

Polis sahte uyuşturucu satıcılarına baskın yaptı ve Zhang Changlin tutuklandı. Polis Cheng Yong'un sığınağını buldu Huang Mao, Cheng Yong'u örtmek için öldü ve ikinci dönüşümünü tamamlamasına izin verdi.

Zarar görerek Hint ilacı almaya devam etti, oğlunu göçe yolladı ve geceleri ilaç sattığı için polis tarafından tutuklandı. Üç yıl sonra hapisten çıktıktan sonra dış dünya değişti.

"Ben tıp tanrısı değilim" filmin kendisinden daha gerçekçi. Pek çok kişi bu filme sevinç duygusuyla yorum yaptı. Herkes nihayet gerçeği söylemeye cesaret eden bir Çin filmi hayal ediyor.

9 Temmuz sabahı erken saatlerde, kümülatif gişe 1.3 milyarı aşarak o günkü gişenin yaklaşık% 84'ünü oluşturdu.

Hangi bölgeler daha fazla gişeye katkıda bulundu?

Bu resim dinamik olarak gösterilirse, en çok katkıda bulunanların: Pekin, Şangay, Guangzhou ve ikinci kademe şehirler de gişeye katkıda bulunanlar olduğunu göreceksiniz.

Portreden bakarsak, orta yaşlı kişi daha yağlı olma eğilimindedir.Herkes yaşlılıktan, hastalıktan ve ölümden korkar.Herkes utançtan korkar.Herkesin geçimini sağlamak için yapması gereken şeyler vardır.Herkes gerçeği özler ve Güzel ... Sansasyonel Tıp Tanrısını gerçeklikten daha az boşa çıkarmak için bir araya gelen bu anlardır.

Verilerden gelen yorumlara bakıldığında:

Güzel, gerçekçi, iyi film, dokunaklı, ağlamaklı, harika iş

"Lider, yalvarırım," sahte ilacı "bir daha kontrol etme. Bu ilaç sahte, onu yiyenlerimiz bilmiyor mu?"

"Üç yıl boyunca orijinal ilacı aldım ve ev tükendi ve ev çöktü. Şimdi sonunda ucuz bir ilacım var, ancak bunun" sahte bir ilaç "olduğunu söylemelisin. İlaç olmadan sadece ölmeyi bekleyebiliriz. "

"Ben bir ilaç tanrısı değilim" herkesin acı noktalarına damgasını vuruyor Sizin ve ailenizin bu yaşamda hastalanmayacağınızı kim garanti edebilir?

Ciddi bir hastalık durumunda, on binlerce kişinin yüksek tıbbi masrafları, sıradan insanları karşılayamaz hale getirecektir. Bir kişinin hastalanması ve tüm ailenin çökmesi endişe verici değil.

Regresyon teknolojisi: verileri nasıl elde ettiğimizi paylaşın

Birincisi Douban. Douban, geçen yılın Ekim ayından bu yana veri taramayı tamamen yasakladı.Sadece 500 adet veri yayınlandı. Douban, IP'yi engelliyor. Gün içinde dakikada 40 kez, geceleri ise dakikada 60 kez erişilebiliyor. Eğer sayı sınırı aşarsa, IP bloke edilecek.

urllib'i içe aktar

ithalat istekleri

urllibimport talebinden

ithalat zamanı

header = {'User-Agent': 'Mozilla / 5.0 (Windows NT 10.0; Win32; x32; rv: 54.0) Gecko / 20100101 Firefox / 54.0',

'Connection': 'canlı tutma'}

çerezler = 'v = 3; iuuid = 1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; webp = true; ci = 1% 2C% E514s 8C% 97% E4% BA% AC; __.3guid = 26581345 ; _lxsdk = 1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; monitor_count = 1; _lxsdk_s = 16472ee89ec-de2-f91-ed0% 7C% 189118.15; __36942 = 7C530

def html_prase (url):

r = request.get (url) .content

dönüş r

çerez = {}

cookies.split (';') içindeki satır için:

isim, değer = cookies.strip (). split ('=', 1)

çerez = değer

def html_prase (url):

r = request.get (url) .content

dönüş r

iin aralığı için (1, 100):

yazdır ('% s sayfası yazdırılıyor'% i)

Deneyin:

url = 'http: //m.maoyan.com/mmdb/comments/movie/1200486.json? _v_ = yesoffset =% s'% (

i * 15)

baskı (url)

proxy = html_prase (' ..decode ('utf-8') # Proxy, kendi kendine oluşturulmuş bir proxy havuzudur, proxy kullanmanız gerekiyorsa benimle iletişime geçebilirsiniz, kimliği bilin: Sermon

html = request.get (url = url, çerezler = çerez, başlıklar = başlık,

proxy'ler = {"http": "http: // {}" .format (proxy)}). içerik

data = json.loads (html.decode ('utf-8'))

verilerdeki öğe için:

yorum = öğe

tarih = item.split ('')

oran = öğe

şehir = öğe

img = öğe

baskı (tarih, oran, yorum, şehir,)

f olarak open ('maoyan_08.txt', 'a', kodlama = 'utf-8') ile:

f.write (tarih + ',' + str (oran) + ',' + yorum + ',' + yorum + ',' + şehir + '\ n')

img ise:

f = open ('C: \ Kullanıcılar \ Masaüstüm \ yaoshen \ img \' + img.split ('/'), 'wb')

f.write ((urllib.request.urlopen (img)). read ())

dışında:

devam et

time.sleep (5 + float (random.randint (1, 100)) / 20)

Başka bir yol: Anyproxy + JS + Python + Monkeyrunner, web statik web sitelerini, Uygulama uygulamalarını ve JS oluşturma verileriyle dinamik web sitelerini tarayabilir.

Kurulum ve kullanım için lütfen şunlara bakın:

Resmi Github:

https://github.com/alibaba/anyproxy

JS kodu:

var logMap = {}

var fs = gerekli ('fs');

var iconv = required ('iconv-lite');

var logger = fs.createWriteStream ('./ urlLog.log', {

bayraklar: 'a' // 'a', ekleme anlamına gelir (eski veriler korunur)

})

function logPageFile (url) {

eğer (! logMap) {

logMap = true;

logger.write (url + '\ r \ n');

}

}

function postData (post_data, yol, cb) {

// // Gönderi dizesini bir nesneden oluşturun

// var post_data = JSON.stringify ({

// 'veri': veri

//});

// Nereye gönderileceğini belirten bir seçenek nesnesi

var post_options = {

ana bilgisayar: '127.0.0.1',

bağlantı noktası: '9999',

yol: '/' + yol,

yöntem: 'POST',

başlıklar: {

'İçerik Türü': 'uygulama / json',

'İçerik Uzunluğu': Buffer.byteLength (post_data)

}

};

var http = required ('http');

// İsteği oluşturun

var post_req = http.request (post_options, function (res) {

res.setEncoding ('utf8');

res.on ('veri', cb);

});

logger.write ('veri 1'i iste \ r \ n')

// verileri gönder

post_req.write (post_data);

logger.write ('veri 2'yi iste \ r \ n')

post_req.end ();

}

module.exports = {

özet: 'yanıtı değiştirmek için bir kural',

* beforeSendResponse (requestDetail, responseDetail) {

eğer (/movie\/1200486/i.test(requestDetail.url)) {

logger.write ('eşleşti:' + requestDetail.url + '\ r \ n');

eğer (responseDetail.response.toString ()! == "") {

logger.write (responseDetail.response.body.toString ());

var post_data = JSON.stringify ({

'url': requestDetail.url,

'body': responseDetail.response.body.toString ()

});

logger.write ("sunucuya açıklama gönder - ext");

postData (post_data, 'douban_comment', işlev (yığın) {

});

}

}

},

};

JS kodunu yüklemek için AnyProxy kullanın:

anyproxy -i --rule wxrule.js

Servis kodu bölümü:

#! / usr / bin / env python3

asyncio içe aktar

yeniden ithal

metin sarmayı içe aktar

ithal iş parçacığı

ithalat zamanı

işletim sistemini içe aktar

ithal pymysql

mysqlmgrimport'tan MysqlMgr

Mongomgrimport MongoManager'dan

alt işlemden içe aktarma çağrısı

ithalat istekleri

lxmlimport etree'den

lxmlimport html'den

aiohttp.webimport Uygulamasından, Yanıt, StreamResponse, run_app

json içe aktar

STATE_RUNNING = 1

STATE_IN_TRANSACTION = 2

running_state = 0

run_swipe = Doğru

last_history_time = time.clock ()

# Verileri arka planda veritabanına kaydetmek için bir iş parçacığı

def insert_to_database (biz, msglist):

Deneyin:

msglist içindeki msg için:

baskı (biz)

yazdır (msg)

mongo_mgr.enqueue_data (msg, biz, msg)

e gibi İstisna hariç:

baskı (e)

def save_data (biz, msglist_str):

save_thread = threading.Thread (hedef = insert_to_database, args = (biz, msglist_str,))

save_thread.setDaemon (Doğru)

save_thread.start ()

def swipe_for_next_page ():

run_swipe sırasında:

zaman.sleep (5)

eğer time.clock () - last_history_time > 120:

running_state == STATE_RUNNING ise:

yeniden gir ()

devam et

aramak()

def reenter ():

global running_state

running_state = STATE_IN_TRANSACTION

# Önceki sayfaya geri dönmek için yan kaymayı simüle edin

aramak()

zaman.sleep (2)

# "Geçmiş mesajını girin" i tıklayın, her telefonun konumu farklıdır, X ve Y'yi ayrı ayrı ayarlamanız gerekir

aramak()

zaman.sleep (2)

header = {'Kullanıcı-Aracı': 'Mozilla / 5.0 (Windows NT 10.0; Win64; x64; rv: 54.0) Gecko / 20100101 Firefox / 54.0', 'Bağlantı': 'canlı tut'}

def html_prase (url):

r = request.get (url, başlık) .content

html.fromstring (r) döndür

async def report_url (istek):

resp = StreamResponse ()

data = await request.json ()

url = veri

# print ("url bildirildi:" + url)

biz = re.findall ('__ biz = (. *?) \', url)

eğer len (biz) == 0:

yanıt bekleyin. hazırlayın (istek)

dönüş yanıtı

biz = biz

baskı ('---------------- \ r \ n' + biz + '\ r \ n ---------------- \ r \ n ')

mysql_mgr.enqueue_biz (biz, '')

bizs.add (biz)

biz = biz.encode ('utf8')

resp.content_type = 'metin / düz'

yanıt bekleyin. hazırlayın (istek)

resp.write (biz)

resp.write_eof () bekliyoruz

dönüş yanıtı

eşzamansız tanım girişi (istek):

txt = textwrap.dedent ("" "\

{Url} / merhaba / John {url} / simple veya {url} / change_body yazın

tarayıcı url çubuğunda

"" ") .format (url = '127.0.0.1: 8080')

ikili = txt.encode ('utf8')

resp = StreamResponse ()

resp.content_length = len (ikili)

resp.content_type = 'metin / düz'

yanıt bekleyin. hazırlayın (istek)

resp.write (ikili)

dönüş yanıtı

async def simple (istek):

dönüş Yanıtı (text = "Basit yanıt")

async def change_body (istek):

resp = Yanıt ()

resp.body = b "Gövde değişti"

resp.content_type = 'metin / düz'

dönüş yanıtı

# kodlama = utf-8

eşzamansız def app_douban_comment (istek):

resp = StreamResponse ()

data = await request.json ()

global running_state

global last_history_time

msg_data = json.loads (veri)

msg_data'daki öğe için:

yorum = öğe.şerit (). değiştir ('\ n', '')

oran = öğe

yazdır (yorum, oran)

f olarak open ('date_rate_comment_sg.txt', 'a', encoding = 'utf-8') ile:

f.write ('2018-07-06' + ',' + str (oran) + ',' + yorum + '\ n')

last_history_time = time.clock ()

resp.content_type = 'metin / düz'

yanıt bekleyin. hazırlayın (istek)

resp.write_eof () bekliyoruz

dönüş yanıtı

last_history_time = time.clock ()

resp.content_type = 'metin / düz'

yanıt bekleyin. hazırlayın (istek)

resp.write_eof () bekliyoruz

dönüş yanıtı

async def init (döngü):

app = Uygulama ()

app.router.add_get ('/', giriş)

app.router.add_post ('/ url', report_url)

app.router.add_post ('/ douban_comment', app_douban_comment)

uygulamaya geri dön

def start_swipe_thread ():

Deneyin:

t = threading.Thread (

target = swipe_for_next_page, name = 'kaydırın')

# ctrl-c alındığında ana iş parçacığının çıkabilmesi için daemon'u ayarlayın

t.setDaemon (Doğru)

t.start ()

İstisna hariç:

baskı ("Hata: iş parçacığı başlatılamıyor")

döngü = asyncio.get_event_loop ()

app = loop.run_until_complete (init (döngü))

run_app (uygulama, ana bilgisayar = '127.0.0.1', bağlantı noktası = 9999)

Bu örnek koddur, gerçek kullanım sürecinin ince ayarlanması gerekir. Maoyan verilerini elde etmek için en zor şey, Maoyan App'in veri arayüzünü bulmaktır.

Bulmak çok çaba sarf etti:

'

Arayüz nasıl kullanılır, doğrudan koda bakın, Taoticket'in verilerini bulmaya çalışmanız gerekir.

json içe aktar

rastgele içe aktar

urllib'i içe aktar

ithalat istekleri

urllibimport talebinden

ithalat zamanı

header = {'User-Agent': 'Mozilla / 5.0 (Windows NT 10.0; Win32; x32; rv: 54.0) Gecko / 20100101 Firefox / 54.0',

'Connection': 'canlı tutma'}

çerezler = 'v = 3; iuuid = 1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; webp = true; ci = 1% 2C% E514s 8C% 97% E4% BA% AC; __.3guid = 26581345 ; _lxsdk = 1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; monitor_count = 1; _lxsdk_s = 16472ee89ec-de2-f91-ed0% 7C% 189118.15; __36942 = 7C530

çerez = {}

cookies.split (';') içindeki satır için:

isim, değer = cookies.strip (). split ('=', 1)

çerez = değer

def html_prase (url):

r = request.get (url) .content

dönüş r

iin aralığı için (1, 100):

yazdır ('% s sayfası yazdırılıyor'% i)

Deneyin:

url = 'http: //m.maoyan.com/mmdb/comments/movie/1200486.json? _v_ = yesoffset =% s'% (i * 15) + 'startTime = 2018-07-01% 2012% 3A30% 3A42 '

baskı (url)

html = request.get (url = url, cookies = cookie, headers = header) .content

data = json.loads (html.decode ('utf-8'))

verilerdeki öğe için:

yorum = öğe

tarih = item.split ('')

oran = öğe

şehir = öğe

img = öğe

baskı (tarih, oran, yorum, şehir,)

f olarak open ('maoyan_08.txt', 'a', kodlama = 'utf-8') ile:

f.write (tarih + ',' + str (oran) + ',' + yorum + ',' + yorum + ',' + şehir + '\ n')

img ise:

f = open ('C: \ Kullanıcılar \ Masaüstüm \ yaoshen \ img \' + img.split ('/'), 'wb')

f.write ((urllib.request.urlopen (img)). read ())

dışında:

kırmak

time.sleep (5 + float (random.randint (1, 100)) / 20)

Dinamik harita görüntüleme kodu:

pyechartsimport Style'dan

pyechartsimport Geo'dan

city =

f olarak open ('maoyan.txt', mode = 'r', kodlama = 'utf-8') ile:

satırlar = f.readlines ()

satırlardaki satırlar için:

len (row.split (',')) == 5 ise:

şehir.append (row.split (','). değiştirin ('\ n', ''))

def all_list (dizi):

sonuç = {}

iin seti için (dizi):

sonuç = arr.count (i)

dönüş sonucu

data =

all_list (şehir) içindeki öğe için:

data.append ((öğe, all_list (şehir)))

style = Stil (

title_color = "# fff",

title_pos = "center",

genişlik = 1200,

yükseklik = 600,

background_color = '# 404a59'

)

geo = Geo ("" Ben bir ilaç tanrısı değilim "", "Veri kaynağı: Zhihu Kimliği: Sermon", ** style.init_style) içindeki yorum kalabalığının coğrafi konumu

attr, değer = geo.cast (veri)

geo.add ("", attr, değer, görsel_aralık =,

visual_text_color = "# fff", is_legend_show = Yanlış,

symbol_size = 20, is_visualmap = Doğru,

tooltip_formatter = '{b}',

label_emphasis_textsize = 15,

label_emphasis_pos = 'sağ')

geo.render ()

Her gün veri hacmini taramak için kod:

pyechartsimport'tan EffectScatter

pyechartsimport Style'dan

style = Stil (

title_color = "# 191970",

title_pos = "sol",

genişlik = 900,

yükseklik = 450,

background_color = '# F8F8FF'

)

es = EffectScatter ("Ben bir uyuşturucu tanrısı değilim" kısa inceleme veri durumu "," veri kaynağı: Zhihu Kimliği: sermon ", ** style.init_style)

es.add ("" ,,, symbol_size = 20, effect_scale = 4,

effect_period = 5, sembol = "pin")

es.add ("" ,,, symbol_size = 20, effect_scale = 4,

effect_period = 5, sembol = "pin")

es.add ("" ,,, symbol_size = 20, effect_scale = 4,

effect_period = 5, sembol = "pin")

es.add ("" ,,, symbol_size = 20, effect_scale = 4,

effect_period = 5, sembol = "pin")

es.add ("" ,,, ssymbol_size = 20, effect_scale = 4,

effect_period = 5, sembol = "pin")

es.add ("" ,,, ssymbol_size = 20, effect_scale = 4,

effect_period = 5, sembol = "pin")

es.add ("" ,,, symbol_size = 20, effect_scale = 4,

effect_period = 5, sembol = "pin")

es.add ("" ,,, symbol_size = 20, effect_scale = 4,

effect_period = 5, sembol = "pin")

es.render ()

Beş yıldızlı önerilen nehir grafik kodu:

pyechartsimport Style'dan

pyechartsimport ThemeRiver'dan

data =

style = Stil (

title_color = "# 191970",

title_pos = "sol",

genişlik = 1200,

yükseklik = 600,

background_color = '# F8F8FF'

)

tr = ThemeRiver ("" Ben bir ilaç tanrısı değilim "", "Veri kaynağı: Bilen Kimliği: Sermon", ** style.init_style) yıldız tavsiyesi

tr.add (, data, is_label_show = True)

tr.render ()

Kelime Bulutu:

ithal turşu

osimport yolundan

jieba'yı içe aktar

ithal matplotlib.pyplotas plt

wordcloudimport'tan WordCloud, STOPWORDS, ImageColorGenerator

def make_worldcloud (dosya_yolu):

text_from_file_with_apath = open (file_path, 'r', encoding = 'UTF-8'). oku ()

wordlist_after_jieba = jieba.cut (text_from_file_with_apath, cut_all = False)

wl_space_split = "" .join (wordlist_after_jieba)

baskı (wl_space_split)

backgroud_Image = plt.imread ('./ 1.jpg')

print ('Resim başarıyla yüklendi!')

'' 'Kelime bulutu stilini ayarla' ''

stopwords = STOPWORDS.copy ()

stopwords.add ("haha")

stopwords.add ("film")

stopwords.add ("gerçekten")

stopwords.add ("İşte bu")

stopwords.add ("Gerçekten")

stopwords.add ("Çin")

stopwords.add ("Hayır")

stopwords.add ("Evet")

stopwords.add ("bir")

stopwords.add ("hala")

stopwords.add ("son")

stopwords.add ("") # # Birden fazla engellenmiş kelime ekleyebilir

wc = WordCloud (

genişlik = 1024,

yükseklik = 768,

background_color = 'white', # arka plan rengini ayarlayın

maske = backgroud_Image, # arka plan resmini ayarla

font_path = 'E: \ simsun.ttf', # Çince yazı tipini ayarlayın Çince varsa, bu kod eklenmelidir, aksi takdirde bir kutu görünecek ve Çince karakterler görünmeyecektir

max_words = 600, # Maksimum gerçekçi kelime sayısını ayarlayın

stopwords = engellenecek kelimeler, # Durdurma kelimeleri belirleme

max_font_size = 400, # Maksimum yazı tipi boyutunu ayarlayın

random_state = 50, # Kaç tane rasgele oluşturulmuş durum, yani kaç tane renk şeması olduğunu ayarlayın

)

wc.generate_from_text (wl_space_split) # Metni yüklemeye başla

img_colors = ImageColorGenerator (backgroud_Image)

wc.recolor (color_func = img_colors) # Yazı tipi rengi, arka plan resminin rengidir

plt.imshow (wc) # Kelime bulutu görüntüle

plt.axis ('off') # x ekseni ve y ekseni alt simgelerinin görüntülenip görüntülenmeyeceği

plt.show () # göster

# Modülün bulunduğu yolu alın

d = yol.dirname (__ dosya__)

# os.path.join (): Birden çok yolu birleştirin ve geri dönün

wc.to_file (yol.join (d, "h11.jpg"))

print ('Kelime bulutu oluşturma başarılı!')

make_worldcloud ('cloud.txt')

Resim portre kodu:

işletim sistemini içe aktar

matematik ithalat sqrt'den

PIL'den içe aktarma görüntüsü

# yol, arkadaşın profil resminin depolandığı klasörün yoludur

yol = 'C: \ Kullanıcılar \ My \ Masaüstüm \ yaoshen \ img \'

pathList =

os.listdir'deki öğe için (yol):

imgPath = os.path.join (yol, öğe)

pathList.append (imgPath)

toplam = len (yolListesi) #toplam, arkadaşların profil resimlerinin toplam sayısıdır

line = int (sqrt (toplam)) # line, dikilmiş resimlerin satır sayısıdır (yani, her satırda bulunan resim sayısı)

NewImage = Image.new ('RGB', (128 * satır, 128 * satır))

x = y = 0

yolListesindeki öğe için:

Deneyin:

img = Image.open (öğe)

img = img.resize ((128,128), Image.ANTIALIAS)

NewImage.paste (img, (x * 128, y * 128))

x + = 1

IOError hariç:

print ("% d satırındaki dosya okunamadı,% d sütunu başarısız oldu! IOError:% s"% (y, x, öğe))

x - = 1

x == satırı ise:

x = 0

y + = 1

eğer (x + satır * y) == satır * satır:

kırmak

NewImage.save (yol + "final.jpg")

yazar hakkında

Liu Xiaoming, İnternet şirketi işletme ve bakım teknolojisinden sorumlu kişi, 10 yıllık İnternet geliştirme ve işletme ve bakım deneyimine sahiptir. Geliştirmeyi güçlendirmek ve verimliliği artırmak için işletme ve bakım araçlarının geliştirilmesine ve işletme ve bakım uzman hizmetlerinin desteklenmesine kendini adamıştır. Son olarak, kendinize bir tuz verin, vaktiniz olduğunda herkesi markamı geri çevirmeye davet edin (Zhihu: Sermon, WeChat: AiDevOps), "Geliştirme ve Operasyon" sütunundaki makalelere ve resmi hesaptaki makalelere bakın, umarım daha fazla ilgi ve puan Beğen, yazar için en iyi teşviktir!

Lütfen yeniden yazdırmak için THU verilerini belirtin

Operatör: Ran Xiaoshan

Bariyer gölü tehlikesi altındaki Batang merkezileştirilmiş yeniden yerleşim yerinde köylüler gülümsedi ve "Evden farkı yok" dediler.
önceki
O altın çocuk düştü! 18 yaşında Avrupa Kupası'nda ünlü olun
Sonraki
"Renewal, The Forbidden City" baş senaryo yazarı Zhu Yong: Yasak Şehri Anlamak sadece "gong dövüşü" ve dedikodu ile bitmemeli
Dünyadaki büyük ülkelerin AI stratejilerine kapsamlı bir genel bakış (bağlantı ile)
İspanyol polisi Çin yeraltı sigara fabrikasını kırdı, 5 şüpheli tutuklandı
Programcılar için mutlaka görülmesi gereken 19 harika veri bilimi ve makine öğrenimi aracı! (Ekli bilgiler)
Avrupa'nın en popüler Shenfeng'i 21 gol attı ve değeri 27 kez fırladı ve dört dev onu yakalamak için yüksek bedeller ödeyecekti
AI kış mı geliyor? Bu 10 dönüm noktası çok önemlidir
Hendek! Pogba, bir takım arkadaşıyla Dünya Kupası şampiyonası yüzüğü oluşturmak için 200.000 euro ödedi
Hedef algılamaya ulaşmak için size 10 satır Python kodu kullanmayı öğretin (kodla)
Ortalama yaşı 68 olan bu özel grup: 9 çeşit enstrüman, 40'tan fazla orijinal şarkı çalabilir
Zidane çok acımasız! Göreve geldikten 10 günden kısa bir süre sonra Real Madrid, Premier Lig'in en iyi 5 devini oylayacak
Kuru ürünler Bir makale sizi istatistiklere götürür (kaynaklarla birlikte)
İkinci el bir kitapçının yöneticisi olan Fu Tianbin: "Ben bir koleksiyoncu değil, bir kitap koleksiyoncuyum"
To Top