是這樣的 html
有一次想要鬥圖python
配圖微信
就在網上搜索表情包多線程
而後發現了一個表情巨多的網站 app
不當心動起了邪念學習
產生了興趣測試
那就優化
把它們存下來吧 網站
用 requests 請求了一下url
發現這個網站沒有作反爬
發現這裏有 4k+ 的頁面
簡單的切換一下頁面
能夠發現
第一頁的連接是這樣的
https://fabiaoqing.com/biaoqi...
因此以此類推
構建一下全部url
_url = 'https://fabiaoqing.com/biaoqing/lists/page/{page}.html'
這樣咱們就能夠獲得全部表情包的連接了
咱們來看一下頁面裏面的信息
在這裏
咱們只須要圖片的地址和圖片的名稱便可
因此咱們只要獲取到每一個頁面的
全部 img 標籤就能夠了
能夠使用 BeautifulSoup 根據類名獲取
response = requests.get(url)
拿到了頁面裏面的全部 img
那麼就能夠獲取每一個圖片的地址和名稱
從而下載到咱們想要的位置
for img in img_list:
至此
幾行代碼就搞定了
你們在學python的時候確定會遇到不少難題,以及對於新技術的追求,這裏推薦一下咱們的Python學習扣qun:784,758,214,這裏是python學習者彙集地!
先來測試一下
下載一個頁面的圖片
能夠發現
每張圖片都獲取到了
效果還行
不過
要下載那麼多張表情包的話
這樣寫的代碼有點慢了
仍是開啓多線程吧
對於這種 IO 操做
仍是能加快很多下載時間的
queue = Queue()
在這裏建立了 DownloadBiaoqingbao 這個線程類
而後建立 10 個線程
把 url 添加到隊列中
來運行一下
這時候文件夾就寫入表情包啦
通過一段時間
小帥b的文件夾就存滿了各類表情包了哈哈哈
誰敢跟我鬥圖
我就砸死他
不過呢
有個問題
文件夾裏面的圖片太多了
須要檢索一下才行
好比咱們要找到關於
小老弟
的表情包
那麼咱們能夠使用
glob
import glob for name in glob.glob('/home/wistbean/biaoqingbao/*小老弟*.*'): print(name)
經過 * 這個符號進行模糊匹配
運行一下能夠獲得全部含有「小老弟」的表情包
到這裏
已經有了大量的表情包
也能夠經過關鍵詞檢索到表情包了
那麼如何進一步用到微信來呢
嘿嘿,我得意的笑
開下腦洞
咱們使用微信的接口和 python 對接一下
好比
我發送給個人微信說
我要關於沙雕的表情包,發 6 張來
這個時候
python接收到指令
而後就去檢索表情包
發送回個人微信
能夠使用 itchat 這個模塊
使用網頁版微信的方式登陸
itchat.auto_login(hotReload=True) itchat.run()
運行這段代碼能夠獲得二維碼
掃一下就能夠登陸進去操做微信了
接着就能夠根據小帥b發送過來的關鍵詞
進行文件搜索
imgs = [] def searchImage(text): print('收到關鍵詞: ', text) for name in glob.glob('/home/wistbean/biaoqingbao/*'+text+'*.jpg'): imgs.append(name) 你們在學python的時候確定會遇到不少難題,以及對於新技術的追求,這裏推薦一下咱們的Python學習扣qun:784758214,這裏是python學習者彙集地!
而後就能夠在回覆微信的時候發送圖片給本身了
在這裏就給本身發前 6 張圖片吧
@itchat.msg_register([PICTURE, TEXT]) def text_reply(msg): searchImage(msg.text) for img in imgs[:6]: msg.user.send_image(img) time.sleep(0.3) print('開始發送表情:', img) imgs.clear()
但這裏有個問題
就是 itchat 在發送圖片的時候
中文名的文件發了沒有反應
後來小帥b發現是 requests 庫的問題
修改它的 fields.py
value = email.utils.encode_rfc2231(value, 'utf-8') # value = '%s*=%s' % (name, value) value = '%s="%s"' % (name, value.encode('utf-8'))
也就是將
value = '%s*=%s' % (name, value)
改爲
value = '%s="%s"' % (name, value.encode('utf-8'))
ok
搞定
ok
以上
固然還能夠優化一下
好比每次加載更多同類型的表情包
將表情包發送給特定的人等等
本身去玩吧