sponsored links

送女朋友的最佳綠植,女生見了都愛養! 附:應該是都能養活的—吧?

導語

綠植之於家居的地位可以說是越來越重要,也是最容易出效果的軟裝物料了吧!

不過,不同於其他的軟裝選手,綠植擁有更柔軟的生命,需要你花心思呵護。那麼問題又來了,總是把植物養死怎麼破?

送女朋友的最佳綠植,女生見了都愛養! 附:應該是都能養活的—吧?

之前一直有養一些小植物的小興趣,但是每次都養不活,除了綠蘿,哈哈哈!養過的玫瑰花、梔子花帶著花苞買回來幾天就涼了!23333~

送女朋友的最佳綠植,女生見了都愛養! 附:應該是都能養活的—吧?

這不,我不死心啊,最近入手了一小盆的多肉綠植。【聽說多肉好養我才買的!】這盆是藍鳥多肉植物哦!顏色特別好看~顏值高的一眼相中了。

​​

就是不知道在我手裡這盆多肉能撐幾天?也不說為了養活這盆植物,至少要上心嘛~所以我小心小心地準備開始養了。

但是不知道多肉植物的習慣,光照等等——

SO 做了一款Python介面化小程式—多肉植物的資料查詢小系統,養護的日照、施肥、繁殖等等都在裡面!

這次肯定養的活了哈!家裡有種植多肉植物的這次可有福利啦,跟著小編一起吧~

送女朋友的最佳綠植,女生見了都愛養! 附:應該是都能養活的—吧?

正文

本文是基於Pyqt5的介面化小程式哦,首先是把環境都安裝好啦!

(1)環境安裝:Python3、Pycharm安裝包;PyQt5、pillow、requests模組以及一些自帶的模組。

模組安裝統使用豆瓣的映象源安裝哈:pip install -i https://pypi.douban.com/simple/ +模組名。

(2)選擇的多肉資料網址是這個:http://www.mengsang.com/duorou/需要先獲取這些資料。程式碼如下:

'''
Function:
    多肉資料爬蟲
'''
import os
import time
import random
import pickle
import requests
from lxml import etree

'''多肉資料爬蟲'''
class SucculentCrawler():
    def __init__(self, **kwargs):
        self.referer_list = ["http://www.google.com/", "http://www.bing.com/", "http://www.baidu.com/", "https://www.360.cn/"]
        self.ua_list = ['Mozilla/5.0 (Linux; Android 5.1.1; Z828 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36',
                        'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36',
                        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',
                        'Mozilla/5.0 (iPad; CPU OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/47.0.2526.107 Mobile/12F69 Safari/600.1.4',
                        'Mozilla/5.0 (iPad; CPU OS 11_2_5 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) CriOS/64.0.3282.112 Mobile/15D60 Safari/604.1',
                        'Mozilla/5.0 (Linux; Android 7.1.1; SM-T350 Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Safari/537.36',
                        'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Safari/537.36',
                        'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36',
                        'Mozilla/5.0 (Linux; Android 6.0.1; SM-G610F Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36',
                        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
                        'Mozilla/5.0 (Linux; Android 5.1.1; 5065N Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36',
                        'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36',
                        'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36']
        self.page_urls = self.__getAllPageUrls()
        self.page_pointer = -1
        self.savedir = 'resources/succulents'
    '''爬取下一頁資料'''
    def next(self):
        # 獲取連結
        self.page_pointer += 1
        if self.page_pointer >= len(self.page_urls):
            return True
        page_url = self.page_urls[self.page_pointer]
        # 提取該頁中多肉的圖片+詳情頁連結
        res = requests.get(page_url, headers=self.__randomHeaders())
        res.encoding = 'gbk'
        html = etree.HTML(res.text)
        html = html.xpath('//span[@class="tImgUlImg"]')
        succulent_list = []
        for item in html:
            succulent_list.append([item.xpath('a/@title')[0].replace('/', '-').replace('\\', '-'), item.xpath('a/img/@src')[0], item.xpath('a/@href')[0]])
        # 爬取詳情頁資料
        for item in succulent_list:
            data = [item[0], item[1]]
            headers = self.__randomHeaders()
            headers.update({'Referer': page_url})
            res = requests.get(item[-1], headers=headers)
            res.encoding = 'gbk'
            html_root = etree.HTML(res.text).xpath('//div[@class="cbRight"]/div[@class="mainBox"]')[0]
            html = html_root.xpath('div[2]/table[@class="tTable"]/tr')[1:]
            intro = ['繁殖: ', '易活度: ', '季節: ', '溫度: ', '日照: ', '澆水量: ',
                     '日照說明: ', '澆水說明: ', '大類/屬: ', '中文種名: ', '英文學名: ']
            for idx, tr in enumerate(html):
                if idx == 0:
                    intro[0] = intro[0] + tr.xpath('./td[2]/text()')[0] if tr.xpath('./td[2]/text()') else intro[0] + '未知'
                    intro[1] = intro[1] + int(tr.xpath('./td[4]/img/@src')[0].split('/')[-1].split('.')[0][1:]) * ''
                elif idx == 1:
                    intro[2] = intro[2] + tr.xpath('./td[2]/text()')[0] if tr.xpath('./td[2]/text()') else intro[2] + '未知'
                    intro[3] = intro[3] + tr.xpath('./td[4]/text()')[0].strip().replace(' ', '') if tr.xpath('./td[4]/text()') else intro[3]
                elif idx == 2:
                    intro[4] = intro[4] + int(tr.xpath('./td[2]/img/@src')[0].split('/')[-1].split('.')[0]) * ''
                    intro[5] = intro[5] + int(tr.xpath('./td[4]/img/@src')[0].split('/')[-1].split('.')[0][1:]) * ''
            html = html_root.xpath('div[2]/div')[0].xpath('//div[@class="pt5"]')
            for idx, item in enumerate(html):
                if idx == 0:
                    intro[6] = intro[6] + item.xpath('./span/text()')[0]
                elif idx == 1:
                    intro[7] = intro[7] + item.xpath('./span/text()')[0]
                elif idx == 3:
                    intro[8] = intro[8] + item.xpath('text()')[0] if item.xpath('text()') else intro[8] + '未知'
                elif idx == 4:
                    intro[9] = intro[9] + item.xpath('text()')[0] if item.xpath('text()') else intro[9] + '未知'
                elif idx == 5:
                    intro[10] = intro[10] + item.xpath('text()')[0] if item.xpath('text()') else intro[10] + '未知'
            data.append(intro)
            self.__saveItem(data)
            time.sleep(random.random())
        return False
    '''資料儲存'''
    def __saveItem(self, data):
        if not os.path.exists(self.savedir):
            os.mkdir(self.savedir)
        savepath = os.path.join(self.savedir, data[0])
        if not os.path.exists(savepath):
            os.mkdir(savepath)
        f = open(os.path.join(savepath, 'show.jpg'), 'wb')
        f.write(requests.get(data[1], headers=self.__randomHeaders()).content)
        f.close()
        f = open(os.path.join(savepath, 'info.pkl'), 'wb')
        pickle.dump(data, f)
        f.close()
    '''獲得所有連結'''
    def __getAllPageUrls(self):
        res = requests.get('http://www.mengsang.com/duorou/list_1_1.html', headers=self.__randomHeaders())
        res.encoding = 'gbk'
        html = etree.HTML(res.text)
        num_pages = html.xpath('//span[@class="pageinfo"]/strong')[0].text
        page_urls = ['http://www.mengsang.com/duorou/list_1_%s.html' % i for i in range(1, int(num_pages)+1)]
        return page_urls
    '''隨機請求頭'''
    def __randomHeaders(self):
        return {'user-agent': random.choice(self.ua_list), 'referer': random.choice(self.referer_list)}

(3)系統介面設定。

class SucculentQuery(QWidget):
    def __init__(self, parent=None, **kwargs):
        super(SucculentQuery, self).__init__(parent)
        self.setWindowTitle('多肉植物——資料查詢系統')
        self.setWindowIcon(QIcon('resources/icon/icon.png'))
        # 定義元件
        self.label_name = QLabel('多肉名稱: ')
        self.line_edit = QLineEdit()
        self.button_find = QPushButton()
        self.button_find.setText('查詢')
        self.label_result = QLabel('查詢結果:')
        self.show_label = QLabel()
        self.show_label.setFixedSize(300, 300)
        self.showLabelImage('resources/icon/icon.png')
        self.text_result = QTextEdit()
        self.button_random = QPushButton()
        self.button_random.setText('隨機讀取')
        self.button_update = QPushButton()
        self.button_update.setText('資料更新')
        self.tip_label = QLabel()
        self.tip_label.setText('資料狀態: 未在更新資料, 資料更新進度: 0/0')
        # 排版
        self.grid = QGridLayout()
        self.grid.addWidget(self.label_name, 0, 0, 1, 1)
        self.grid.addWidget(self.line_edit, 0, 1, 1, 30)
        self.grid.addWidget(self.button_find, 0, 31, 1, 1)
        self.grid.addWidget(self.button_random, 0, 32, 1, 1)
        self.grid.addWidget(self.button_update, 0, 33, 1, 1)
        self.grid.addWidget(self.tip_label, 1, 0, 1, 31)
        self.grid.addWidget(self.label_result, 2, 0)
        self.grid.addWidget(self.text_result, 3, 0, 1, 34)
        self.grid.addWidget(self.show_label, 3, 34, 1, 1)
        self.setLayout(self.grid)
        self.resize(600, 400)
        # 事件繫結
        self.button_find.clicked.connect(self.find)
        self.button_random.clicked.connect(self.randomRead)
        self.button_update.clicked.connect(lambda _: threading.Thread(target=self.update).start())

​效果如下所示——

送女朋友的最佳綠植,女生見了都愛養! 附:應該是都能養活的—吧?

送女朋友的最佳綠植,女生見了都愛養! 附:應該是都能養活的—吧?

​總結

想讓多肉植物正常長大,一方面要保證根系是好的,另外一方面要少量施肥,不要乾旱得太厲害。

尤其秋冬給肉肉控狀態的時候,長期不澆水老葉子消耗比較多,葉片聚攏,新葉遲遲長不出,雖然顏色出來了,但肉肉會明顯變小啦~啥時候我養的綠植成這樣子那就真的成功了!

完整的免費原始碼領取處:

如需完整的專案原始碼+素材原始碼基地見:#私信小編06#即可獲取免費的福利!

你們的支援是我最大的動力!!記得三連哦~mua 歡迎大家閱讀往期的文章哦~

推薦往期文章:

Python—2021 |已有文章彙總 | 持續更新,直接看這篇就夠了~

分類: 家居
時間: 2021-10-11

相關文章

室內光照不足,就養4種耐陰綠植,枝葉翠綠茂盛,有精神有活力

室內光照不足,就養4種耐陰綠植,枝葉翠綠茂盛,有精神有活力
室內光照不足,就養4種耐陰綠植,枝葉翠綠茂盛,有精神有活力 在室內養一些綠植,首先要考慮的就是光照問題,一般家中的光線比室外要弱很多,有時候就算是有一點散光,但是適合養在室內的花草植物並不多,沒有充足 ...

新手看過來,老手不要進!綠植澆水術語和方法,你能懂幾個?

新手看過來,老手不要進!綠植澆水術語和方法,你能懂幾個?
雖然每家每戶都有那麼幾盆綠植,但肯定大部分的家中都沒有專業的養花人士吧,花花每次去親朋好友家裡玩,看到大家家裡都養著綠植,但怎麼養,甚至養得是什麼都一問三不知. 這一篇小科普,就是專門為新手或完全不懂 ...

勤養魚,懶養花,家裡這些常見的盆栽綠植都要粗放養護

勤養魚,懶養花,家裡這些常見的盆栽綠植都要粗放養護
很多花友都聽過一句俗語,勤養魚,懶養花.很多朋友在室內養花時,就經常控制不住要澆水,看到盆栽表層土幹了,就馬上澆水.可想而知,室內絕大部分的植物都是由於水多被淹死的. 小貼士: 上面分別是發財樹.君子 ...

寶寶誤食家中花卉中毒,這12種美麗綠植,有小孩的家庭要遠離

寶寶誤食家中花卉中毒,這12種美麗綠植,有小孩的家庭要遠離
近來植物中毒事件發生越來越頻繁,前幾天,我就親身經歷了一個事故.#南天竹#葉子和果子都很漂亮,葉子像手掌,果子玫瑰紅,晶瑩剔透,特別漂亮.鄰居家小孩喜歡拿它的種子玩耍,不小心誤食了南天竹種子,被送進醫 ...

3萬-5萬元,一場君子蘭直播銷售量。任君揭秘綠植的賺錢方法
在他的努力下,君子蘭的銷售量節節攀升. 淡季平均每場直播收益1萬元左右,旺季能達到3萬-5萬元,這是曾經想都不敢想的事情. 任君,公主嶺市大嶺鎮大君蘭苑總經理.一個返鄉青年的電商路:用網際網路思維重新 ...

室內綠植的功能及養護小知識

室內綠植的功能及養護小知識
綠色植物可以說是現在最好裝飾家居的飾品了,它既能夠裝點我們的家居,同時還能夠淨化我們的室內空氣,在美觀的同時還是一臺天然的空氣清淨機,不過綠植養護卻是一門很不小的學問,畢竟綠植種類很多,不同植物的養殖 ...

為什麼家裡綠植經常掉葉子,原來真正的原因是這個
很多人家裡都會養上一兩盆觀葉植物,不僅能夠裝點家居,在賞心悅目的過程中,還能清新室內的空氣.但是有時候家裡養的綠植會莫名其妙出現葉片掉落的情況.這是不少人第一反應就是我的植物是不是生病了,其實答案不全 ...

客廳裡差了點意思,可能不是裝修不好,而是你缺這9種綠植做點綴

客廳裡差了點意思,可能不是裝修不好,而是你缺這9種綠植做點綴
直接開門見山,看組對比圖,角落適當綠植點綴,家居氛圍感是不是完全不一樣,生氣勃勃而有質感↓ 綠植和燈光一樣,對於家的溫馨重要性不可言喻,有時候房子裝好了效果不出來,或者總覺得哪裡差點意思,可能不是傢俱 ...

家裡光不好,就養10種耐陰綠植,葉子比花還要美

家裡光不好,就養10種耐陰綠植,葉子比花還要美
花友是一個龐大的群體,相信許多家裡喜歡養些花花草草的花友們,不能給植物提供百分百合適的生長環境.而家裡住樓房的花友更是有許多煩惱了,其中最致命的就是家裡沒有直射光的問題. 現在小區樓房為了把利益達到最 ...

最像青蘋果的綠植,這5步做好,打造室內“青蘋果樂園”

最像青蘋果的綠植,這5步做好,打造室內“青蘋果樂園”
前一陣子花花介紹了和西瓜皮長得一樣的西瓜皮椒草,西瓜皮椒草畢竟比較小眾,室內栽培還沒有在國內開始普及.今天花花就為大家帶來了新植物,是一種葉片長得最像青蘋果的綠植--青蘋果竹芋,它的知名度比西瓜皮椒草 ...

不想養綠植,種了這4種“黑植”,養得起勁卻差點被扔掉

不想養綠植,種了這4種“黑植”,養得起勁卻差點被扔掉
花花有一個好朋友,受家裡人的影響,從小就開始養花,但看了幾十年的綠植和各種奇花異草,實在是不想再養綠植了. 於是她另闢蹊徑,開始了自己養"黑植"的道路,雖然說是黑色植物,但只是視覺 ...

8款適合放客廳的大型植物,你們家養大型綠植了嗎?

8款適合放客廳的大型植物,你們家養大型綠植了嗎?
最適合放在客廳的8款中大型綠植 1.天堂鳥 葉大枝粗,生命力強,讓家居迴歸自然 2.幸福樹 吸收甲醛,淨化空氣,寓意生活過得幸福快樂,甜甜蜜蜜. 3.發財樹 夏天干透再澆水,冬天一個月澆一次. 4.散 ...

紅薯,綠植

紅薯,綠植
看我水培紅薯,綠植 可觀賞 可食用[中國贊][中國贊] 水培紅薯

七葉蓮一年四季常綠,容易扦插繁殖的綠植

七葉蓮一年四季常綠,容易扦插繁殖的綠植
七葉蓮又叫八方來財,是最容易扦插繁殖的綠植. 首先選一個粗壯的枝條,剪成10公分的小段,每段只保留一根葉莖. 葉莖上方2~3公分剪平口,下方剪斜口,透明水杯打孔,裝滿蛭石,蛭石透氣性好,保溼性也好,還 ...

耐陰的 5種綠植,放在客廳,衛生間,北向窗臺,都能養得很好

耐陰的 5種綠植,放在客廳,衛生間,北向窗臺,都能養得很好
耐陰的 5種綠植,放在客廳,衛生間,北向窗臺,都能養得很好! 家中室內養綠植,最怕的就是黃葉子,目前大多數喜歡養綠植的朋友,都面臨這樣一個問題,把油綠綠的植物買回家,養了不到半年的時間,植物的葉子就開 ...

秋分過後,養花養綠植的朋友們這幾件事要注意了

秋分過後,養花養綠植的朋友們這幾件事要注意了
秋分至,連南方也有了些許涼意,但對於植物來說,秋天是它們最愛的季節了.秋天是許多植物的生長期,陽光不再火辣辣,而是溫暖和煦.今天小繪分享一下秋天植物養護知識,一起來看看吧! 一.光照 秋分之後,光照不 ...

哪些可以提升空間質感的綠植?這10種綠植擺在家裡,空間很有氣質

哪些可以提升空間質感的綠植?這10種綠植擺在家裡,空間很有氣質
綠植作為一種源於自然,把綠植元素放到室內空間,可以讓室內空間顯得更加自然舒適,透過綠植與裝修風格相互呼應,還能營造出獨特的空間氣質,提升居家氛圍的檔次質感.想在家裡擺點綠植,有哪些是可以提升居家空間的 ...

斐而達綠植盆栽,除了淨化室內的空氣還有這些好處
在我們日常生活中,都會在庭院或者室內種植一些綠色植物,其中許多的綠色植物均有監測報警及淨化室內空氣的功能,夠有效地減輕或除去室內環境汙染對人體造成的損傷,是淨化室內空氣的好"幫手," ...

特別喜歡水分的7種盆栽綠植,養護時要給足水

特別喜歡水分的7種盆栽綠植,養護時要給足水
有少數幾種植物可以養在一些沒有排水孔的花盆中,因為它們比其他植物更能忍受潮溼的土壤,甚至可以在半水半土的環境中生長.當然,絕大部分的植物還是很害怕土壤積水的,給植物配土時一定要下足功夫. 上面是鴨腳木 ...