初学Python爬虫(三):图片下载、微信自动回复和数据可视化

两个星期不见了,这段时间学了好几方面的东西,所以统一放上来了!

1、图片下载

不废话,直接上连接:
Python小爬虫——贴吧图片的爬取
感觉已经很细致了,对于本人电脑而言(Python3.7),将urllib.urlopen()改成urllib.request.urlopen()即可。
如果说我想爬其他网页的图片,怎么办?
甚至来说,我发现一些贴子的代码表示就不一样。
那么就要修改正则表达式了。
怎么做呢?找些完备的教程学习一下。
Python“正则表达式”详解(上)
感觉还行,成果是把自己想要的图片都弄出来了。
除了这个网页:calibur
卧槽这个的背景图简直了。。根本找不到在哪里扒。。
冰於大佬牛逼。。
(思路应该是异步加载方面的?之后再好好学习)
03.24晚修改:已经解决了,是正则表达式的问题…图是可以正常扒的。

2、微信自动回复

备包:itchat
针对微信的神包,只能这么形容了。
可以拉取好友信息,收发信息等等,具体可以跟着官网学,当然网上还有一些教程,搜索python+微信就能看见。
itchat官方
提供了很简易的发信息的功能代码,我就想着,能不能做一个微信自动回复呢?顺便还能在后台看见别人给我发了啥?
所以我 做出来了,上代码:

import itchat
from itchat.content import *

# 好友信息监听
@itchat.msg_register([TEXT, PICTURE, RECORDING, ATTACHMENT, VIDEO], isFriendChat=True)
def handle_friend_msg(msg):
    msg_id = msg['MsgId']
    msg_from_user = msg['User']['NickName']
    msg_content = msg['Content']
    msg_create_time = msg['CreateTime']
    msg_type = msg['Type']
    print("收到信息: ", msg_id, msg_from_user, msg_content, msg_create_time,msg_type)
    user_info = itchat.search_friends(name=msg_from_user)
    user_name = user_info[0]['UserName']
    itchat.send_msg('【自动回复】你好,我正在忙,稍后回复你信息', user_name)



if __name__ == '__main__':
    itchat.auto_login()
    itchat.run()

运行结果是…
对不起我错了,我在运行这个的时候,不知道为什么,就是没有好友给我发消息。
所以请自己试试吧!

当然还有鬼畜的:

import itchat

@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
    return msg.text

itchat.auto_login()
itchat.run()

这个运行了就很好玩了,家中常备,亲测有效!
那个…
初学Python爬虫(三):图片下载、微信自动回复和数据可视化
对不起…啊啊啊啊啊啊啊

3、数据可视化

这边主要用的是词云(Wordcloud)实现。
本来上面的微信是用于这里的:提取好友签名关键词做词云。
具体可以参照:
Python之微信好友个性签名词云图((爬虫第三季 (模块篇)))
照搬就可以,如果.ttf出错,可以找一下自己电脑装了什么字体,改一个上去就可以了。
还记得之前写的爬取B站搜索结果题目的代码吗?这次我想把它做成词云!
话不多说,直接上代码:

import urllib.request
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
#import jieba
import numpy as np
from PIL import Image

#实战爬取B站某页信息,并转化为云图v2.0

str0 = 'video-contain clearfix'
str1 = '</ul>'


title_list = []

for urlll in range(1,51):
    url0="https://search.bilibili.com/all?keyword=%E5%8A%A0%E8%97%A4%E6%83%A0&from_source=banner_search&page="+str(urlll)
    page=urllib.request.urlopen(url0)
    getHtml = page.read().decode("utf-8")
    content = getHtml.partition(str0)[2]
    content = content.partition(str1)[0]
    for m in content:
        try:
            num1 = content.index('target="_blank" title=', 0) + 23
            num2 = content.index('" class', num1)
            title_list.append(content[num1:num2])
            content=content[num2:]
        except:
            break

pageFile = open('wewantto2.txt','w',encoding='utf-8')#以写的方式打开pageCode.txt
for i in title_list:
    pageFile.write(i)#写入
    pageFile.write('\n')
pageFile.close()#开了记得关

# 读取要生成词云的文件
wl_space_split = open(u"wewantto2.txt",encoding="utf-8").read()
# 读入背景图片(提前准备好!)
coloring = np.array(Image.open("timg.jpg"))
# 对签名文件jieba
#wordlist_after_jieba = jieba.cut(text, cut_all=True)
# 将jieba后的文件组合到wl_space_split中
#wl_space_split = " ".join(wordlist_after_jieba)
# 实例化对象
my_wordcloud = WordCloud(background_color="white",  #背景颜色
                        max_words=1500,    #最大词数
                        mask=coloring,     #设置背景图片
                        max_font_size=200,  #显示字体最大值
                        random_state=60,   #设置有多少种随机生成状态(有多少种配色方案)
                        scale=5,           #比例
                        font_path="simhei.ttf").generate(wl_space_split)    #选择字体解决口字形问题
# 根据图片生成词云相应颜色
image_colors = ImageColorGenerator(coloring)
my_wordcloud.recolor(color_func=image_colors)
#显示图片
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.axis("off")
plt.show()

对的,这里我把jieba注释掉了,因为不需要,jieba的作用是拆分句子成为随机词汇,感觉起来效果不太好。。当然也和最大词数、字体最大值、颜色多少有很大关系哦。
好的,运行!
结果如下:
初学Python爬虫(三):图片下载、微信自动回复和数据可视化
一个字:帅!