最近学习了一点爬虫,就想着能不能通过企业微信的机器人发送一些图片到微信群中。企业微信机器人说到底就是一个webhook地址,你也可以看成一个URL,而利用企业微信机器人发送图片实则就是向服务器发送post请求,再将响应数据发送到webhook地址,以下是我爬取 彼岸图网()的python爬虫代码,使用的是强大的requests库(scrapy框架还不太会用,就不用了)
import requestsfrom bs4 import BeautifulSoupimport os,re,time,hashlib,base64head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}start_urls = []#定义一个url列表for i in range(1,1000):if(i==1): url = '/index.html' #判断是否为首页,并加入url列表中start_urls.append(url)else:url = '/index_'+str(i)+'.html' #判断是否为非首页,并加入url列表中start_urls.append(url)i = 1 #为了将图片每二十张放入到不同的文件夹url1='https://qyapi./cgi-bin/webhook/send?key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx' #自己的webhoook地址for url in start_urls: #将url列表url依次取出response = requests.get(url) #向服务器发出get请求,获得响应response.encoding='gbk' #设置响应的编码格式为GBKhtml = response.text #获得相应的文本信息soup = BeautifulSoup(html,'lxml')#通过beautifulsoup库中的lxml HTML 解析器提取数据result = soup.find('ul',class_="clearfix").find_all('img')#找到<img>标签root = 'D:/page/SpiderImgs/imgs-'+str((i//20)+1)+'/' #拼接保存的路径 根据自己要保存的路径替换for img in result:path = root + img['src'].split('/')[-1] #获取图片资源名称(/uploads/allimg/190824/212516-1566653116f355.jpg中的212516-1566653116f355.jpg)并拼接保存路径url = ''+img['src'] #拼接图片的urlr = requests.get(url, headers=head) #发送get请求图片资源if not os.path.exists(root):#判断文件夹是否存在os.makedirs(root) #创建新的文件夹else:with open (path,'wb+') as f: #创建一个文件以二进制写f.write(r.content) #将请求服务器图片资源的响应结果写进文件中f.close()print("图片 "+str(i)+".jpg 保存成功")try:with open(path,'rb') as f: #以读二进制的方式打开文件base64_data = base64.b64encode(f.read()).decode() #获取base64编码file = open(path,'rb') md = hashlib.md5()md.update(file.read())res1 = md.hexdigest() #获取图片内容的md5值data = {"msgtype" : 'image',"image":{"base64":base64_data,"md5":res1}}#JSON数据格式t = requests.post(url1, headers=head, json=data) #发送post请求except:print("异常")print('\n')i = i + 1 #文件夹名称加一time.sleep(3) #让程序睡3秒
以上代码有任何问题或不懂可在评论区留言,