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