Python获取微信群网内个人,微信群二维码及账号

更多教程请移步至:洛凉博客

求助请移步至:Python自学技术交流


一、介绍

最近一直在写爬虫,前几天和老哥聊天。(老哥任职于某医疗公司)老哥也在研究爬虫。我就问他爬什么网站。然后老哥直接给我发了链接过来。我看了下:是个小网站。一看就挺好爬的。然后自己就写起代码来了。
网站为:http://www.weixinqun.com/。这个网站也真是绝了,各种行业个人,群信息都有。
有需要的也可以去试试。
这代码从周五晚上断断续续,一直写到今天上午才算真正调试完了。
晚上睡觉都在想出问题的地方改这么处理。


二、爬取思路

思路还是老套路。
用的模块我这里直接贴出来。1.requests,2.bs4,3.xlwt,4.md5,5.os
也就是一些定向爬虫常用的一些模块。
由于数据比较多。这里采用的是excel保存相关信息,二维码单独存在标题目录下。
之前没看过xlwt模块,昨天晚上一直在研究这模块,官方示例代码很好理解。
QQ群里有朋友介绍用CVS保存。据他说比excel更简单。(后续我也去看看这模块)
代码里面除了主函数有6个函数。这里介绍下吧。
第一个函数:获取页面源码
第二个函数:通过一个函数获取到的源码,再获取每页的列表里数据详细链接
第三个函数:获取每个详细链接里面的数据


圈中部分为需要获取的.png

第四个函数:将获取到的写入excel文件
第五个函数:保存二维码图片至本地
第六个函数:将获取到的信息切片,方便存入excel。


获取到的信息和页面展示一样,有冒号分开.png

切片后存储方便查阅.png

我比较懒,这里就不每个函数细介绍了,一会贴完整代码,代码里写了一些注释,大家自己看吧。

三、代码自我评价

1:这些代码优化空间应该还挺大的,比如写入excel的数据,我这里采用的是将所有的数据存到一个列表里面,然后再取出来写入excel文件。
2:这里我也没有写多线程。里面for写的有点多,写多线程怕搞懵了。(反正也是写着玩的,就没在意爬取效率了)(PS:其实我多线程还不怎么会用,哈哈)
3:我把代码丢到服务器爬了一个类型的所有个人微信号信息。爬完有(1162条信息),二维码也都是以类似标题名称创建的文件夹下面。


大家运行改下相应的存储路径吧。

此代码请勿商用,如侵犯个人信息还请告知,本人立马删除!

import requests
from bs4 import BeautifulSoup
import bs4
import xlwt
from hashlib import md5
import os


headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'}

def gethtml(url):
    '''解析页面源码'''
    try:
        #添加浏览器头,访问超时
        html = requests.get(url,headers=headers,timeout=30)
        html.raise_for_status()
        html.encoding = html.apparent_encoding
        return html.text
    except:
        print('获取页面源码失败')


def getchaturls(html):
    '''获取每页信息详情链接'''
    try:
        soup = BeautifulSoup(html,'html.parser')
        chat_url = []
        for chat in soup.find_all('div',class_='border5'):
            chat = chat.a.attrs['href']
            chat_url.append('http://www.weixinqun.com'+chat)
        return chat_url
    except:
        print('获取页面详细详细链接失败')


def getinfo(url,infos):
    '''获取链接详情页面所需信息'''
    try:
        picurls = []
        html = gethtml(url)
        soup = BeautifulSoup(html,'lxml')
        pic = soup.find('div',class_='iframe')
        x = pic.find_all('span',class_='shiftcode')
        #判断是否详情页面是否有群主及群二维码
        if len(x) == 2:
            picurls.append(x[0].img.attrs['src'])
            picurls.append(x[1].img.attrs['src'])
        else:
            picurls.append(pic.img.attrs['src'])
        #找到详情页面需要数据所在的标签
        clearfix = soup.find('div',class_='des_info')
        #在需要的标签内获取标题
        title = clearfix.find('span',class_='des_info_text').get_text().replace('\n','').replace(' ','').replace(':','')
        #获取详细信息
        for info in clearfix.find('ul').children:
            if isinstance(info, bs4.element.Tag):
                other = info('li')
                for a in other:
                    infos.append(a.get_text().replace('\n','').replace(' ',''))
        #获取微信号
        waccount = clearfix.find_all('span',class_='des_info_text2')
        infos.append('微信号:'+waccount[1].get_text().replace('\n','').replace(' ',''))
        #获取热度
        hot = clearfix.find_all('span',class_='Pink')
        infos.append('热度:'+hot[0].get_text().replace('\n','').replace(' ',''))
        print('正常处理的详情标题:{}'.format(title))
        #调用保存二维码方法
        savepic(picurls,title)
    except:
        print('详情页面解析失败')


def saveinfo(infoms):
    '''保存excel文件'''
    wb = xlwt.Workbook()
    ws = wb.add_sheet('wchat')
    ws.write(0, 0, '行业')
    ws.write(0, 1, '时间')
    ws.write(0, 2, '地区')
    ws.write(0, 3, '标签')
    ws.write(0, 4, '微信号')
    ws.write(0, 5, '热度')
    pp = 1
    for b in range(0, len(infoms), 6):
        ws.write(pp, 0, infoms[b])
        ws.write(pp, 1, infoms[b + 1])
        ws.write(pp, 2, infoms[b + 2])
        ws.write(pp, 3, infoms[b + 3])
        ws.write(pp, 4, infoms[b + 4])
        ws.write(pp, 5, infoms[b + 5])
        pp += 1
        wb.save('D://微信群//wchat.xls')


def savepic(picurls,title):
    '''保存群或群主/个人微信二维码'''
    path = 'D://微信群//'
    if not os.path.exists(path):
        os.mkdir(path)
    path1 = path+title+'//'
    if not os.path.exists(path1):
        os.mkdir(path1)
    for url in picurls:
        photo = requests.get(url,headers=headers).content
        filename = md5(photo).hexdigest()
        with open(path1+filename+'.jpg','wb') as f:
            f.write(photo)
            f.close()


def infossplit(infos):
    '''字符串切片操作'''
    infoms = []
    for info in infos:
        info = info.split(':')[1]
        infoms.append(info)
    return infoms


def main():
    '''程序入口'''
    #创建空列表存放详情
    infos = []
    for page in range(0,13): #页面默认第一页为0,请至页面查看最后一页的数字,将最后一页数字加1输入括号第二位置
        #如需其他类型,请至浏览器查看对应类型链接的t值,如微信群链接开头为:http://www.weixinqun.com/group,个人链接开头为:http://www.weixinqun.com/personal
        first_url = 'http://www.weixinqun.com/personal?t=52&p={}'.format(page)
        print('正在处理第{}页,链接为:{}'.format(page,first_url))
        html = gethtml(first_url)
        urls = getchaturls(html)
        for url in urls:
            print('=====分隔符=====')
            print('正在处理第{}页,内容详情链接为:{}'.format(page,url))
            getinfo(url,infos)
    infoa = infossplit(infos)
    print(infos)
    saveinfo(infoa)
    print('=====全部处理完成=====')

if __name__=='__main__':
    main()

Python自学技术交流:368639036

有兴趣的可以加入,一起学习,探讨。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342