两个星期不见了,这段时间学了好几方面的东西,所以统一放上来了!
不废话,直接上连接:
Python小爬虫——贴吧图片的爬取
感觉已经很细致了,对于本人电脑而言(Python3.7),将urllib.urlopen()改成urllib.request.urlopen()即可。
如果说我想爬其他网页的图片,怎么办?
甚至来说,我发现一些贴子的代码表示就不一样。
那么就要修改正则表达式了。
怎么做呢?找些完备的教程学习一下。
Python“正则表达式”详解(上)
感觉还行,成果是把自己想要的图片都弄出来了。
除了这个网页:calibur
卧槽这个的背景图简直了。。根本找不到在哪里扒。。
冰於大佬牛逼。。
(思路应该是异步加载方面的?之后再好好学习)
03.24晚修改:已经解决了,是正则表达式的问题…图是可以正常扒的。
备包: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()
这个运行了就很好玩了,家中常备,亲测有效!
那个…
对不起…啊啊啊啊啊啊啊
这边主要用的是词云(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 = ''
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的作用是拆分句子成为随机词汇,感觉起来效果不太好。。当然也和最大词数、字体最大值、颜色多少有很大关系哦。
好的,运行!
结果如下:
一个字:帅!