表格简历

这里有最新的公司动态,这里有最新的网站设计、移动端设计、网页相关内容与你分享!

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 兴趣味的能够加入,一首学习,探讨。

Copyright 站群 © 2013-2021 365建站器 版权所有