自从开始学习爬虫后,总是无法控制那一颗躁动的心。每天总是想要爬点什么,爬过电影、爬过电影影评、爬过图片(美女图)、爬过视频链接,从最初的简单解析网页到模拟登陆再到异步加载,现在看到一个网页最先想的就是要不要爬一下。话不多说,来我们今天的项目,通过模拟登陆和异步加载爬一下QQ群成员的信息。

大概思路

我们通过网页版QQ群管理去获取相应的群信息,通过点击QQ群首页上的“群管理”进入到QQ群页面,分析链接我们发现每一个QQ群的链接形式都是“https://qun.qq.com/member.html#gid=”加上群号码,这样就为我们爬虫减少了一定的工作量。在爬腾讯的网站最大的问题就是登录,我们不能像入门时的简单的发出登录请求包,获取cookies后再用cookies来访问,腾讯的网站是异步加载的,这有的去分析监听network和js请求来找到想要的加载,十分麻烦。所以我们采用selenuim,不需要去找请求,直接模拟登录就可以了,登陆后直接获取到网页的源码,然后像简单的爬虫一样去解析源码获取我们想要的内容。

一、模拟登陆

首先通过selenuim定义一个driver对象,这里我使用的是火狐浏览器,直接通过下面的命令即可调用

driver = webdriver.Firefox()

定义好了以后,我们通过下面的函数浏览器打开我们的想要爬取QQ群的链接,QQ群的链接形式是“https://qun.qq.com/member.html#gid=”+群号码

driver.get(url)

打开以后网页会自动为我们弹出二维码,这就不用我们去模拟点击了,直接用手机qq扫描二维码即可登录,然后就可以看到我们想要爬取QQ群的群成员信息。有成员网名、群名片、QQ号、性别、Q龄、入群时间以及最后发言时间等信息。

二、下拉加载页面

登录到QQ群成员界面后,网页上显示的只有20个左右的人数,当网页下拉时,每次更新会加载20个成员的信息,我们爬取需要所有人的信息就需要模拟下拉界面,这时候selenuim另一个功能出现模拟下拉加载页面

def scroll_foot(driver):js="var q=document.documentElement.scrollTop=100000"return driver.execute_script(js)

三、保存网页源码

通过selenuim里的driver.page_source来获取网页源码,我们可以将源码保存到本地txt文件中,这样可以方便对源码解析,避免每次登陆的麻烦。

#获取源码
res = driver.page_source
#关闭浏览器
driver.quit()
#保存源码
with open('html.txt', 'w', encoding='utf-8') as f:f.write(res)
f.close()

四、提取信息

相信到了这一步很多小伙伴都十分熟悉了,这一步就是我们刚接触爬虫时分析网页一样。这里我们使用BeautifulSoup来解析源码。依次获取群成员的信息。

from bs4 import BeautifulSoupwith open('html.txt', 'r', encoding='utf-8') as f:res = f.read()
soup = BeautifulSoup(res,"lxml")
html = soup.select("td")
#number为群成员数
for i in range(number):print("群成员:",html[i*10+2].text.replace("\t", "").replace("\n", ""))print("群名片:",html[i*10+3].text.replace("\t", "").replace("\n", ""))print("QQ号:",html[i*10+4].text.replace("\t", "").replace("\n", ""))print("性别:",html[i*10+5].text.replace("\t", "").replace("\n", ""))print("Q龄:",html[i*10+6].text.replace("\t", "").replace("\n", ""))print("入群时间:",html[i*10+7].text.replace("\t", "").replace("\n", ""))print("最后发言:",html[i*10+8].text.replace("\t", "").replace("\n", ""))

至此,爬虫就结束了。由于涉及群成员信息,就不展示爬虫结果,想试试的伙伴可以根据上面的步骤爬一下自己的QQ群好友信息。更多机器学习算法的学习欢迎关注我们。对机器学习感兴趣的同学欢迎大家转发&转载本公众号文章,让更多学习机器学习的伙伴加入公众号《python练手项目实战》,在实战中成长。

爬虫实战-python爬取QQ群好友信息相关推荐

  1. Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: python小爬虫 PS:如有需要Python学习资料的小伙伴可以 ...

  2. python爬取qq群成员_教你用python爬取自己加入的QQ群成员名单

    本次实验环境: 操作系统:Mac OS 开发语言:python 3.6 IDE:jupyter notebook(建议使用) 浏览器:Chrome(版本75.0.3770.100) 需要用到的库:se ...

  3. python爬取QQ空间好友说说并生成词云

    最近自己玩爬虫玩得很嗨.想到爬QQ空间主要是因为在看网课的时候有不少人刷弹幕要去爬前女友空间..咳咳,虽然我没有前女友,但是这不失为一个有趣的练手机会.(爬完之后发现不会留下访客记录!确实很适合爬前女 ...

  4. Python爬虫实战| Python爬取英雄联盟高清壁纸

    先看一下最终爬取的效果,每个英雄的壁纸都被爬取下来了: "黑暗之女 安妮"的12张壁纸: 高清大图: 下面开始正式教学! 版本:Python 3.5 工具:Jupyter note ...

  5. python爬取控制台信息_python爬虫实战之爬取智联职位信息和博客文章信息

    1.python爬取招聘信息 简单爬取智联招聘职位信息 # !/usr/bin/env python # -*-coding:utf-8-*- """ @Author  ...

  6. python 爬取扣扣群成员信息

    爬取扣扣群成员 通过 https://qun.qq.com/member.html 这个网页你可以登录网页版的扣扣群号管理. 这样你就可以通过网页来爬取信息了.涉及到个人隐私,这里就不放图片了. 请看 ...

  7. Python爬虫实战之爬取QQ音乐之下载有版权的音乐(五)-1

    我这里使用的方法 比较简单 用神奇fiddler即可. 这些分两篇 第一篇定位音乐然后手动操作保存  第二篇自动下载 首先本篇下载的最近很火的一首歌叫 < 你的酒馆对我打了烊 > 这个音乐 ...

  8. python爬取qq群成员_Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码...

    一位伙计自己开了个游戏室,想在群里拉点人,就用所学知识帮帮忙,于是就有了这篇文章,今天小编特此通过实例代码给大家介绍下Python selenium 加载并保存QQ群成员去除其群主.管理员信息的示例代 ...

  9. 利用python爬取租房信息_Python爬虫实战(1)-爬取“房天下”租房信息(超详细)

    #前言html 先看爬到的信息:python 今天主要用到了两个库:Requests和BeautifulSoup.因此我先简单的说一下这两个库的用法,提到的都是此文须要用到的.编程 #Requests ...

最新文章

  1. 图片浏览(CATransition)转场动画
  2. html 在tomcat中访问不到_安全服务之安全基线及加固(四)Tomcat篇
  3. 检查点(Checkpoint)过程如何处理未提交的事务
  4. [机器学习笔记]Note7--神经网络:学习
  5. 在servlet中或者在filter中获取spring容器中的bean
  6. Spring 事务使用详解
  7. 下半年登场!小米MIX 4概念图曝光:有望首发屏下摄像头
  8. mongodb数据库显示obj_Mongodb使用
  9. 【Java】Int类型逻辑运算符的详细描述---含代码
  10. Java单例模式之最优解分析【为何说是最优解】
  11. win11很卡怎么办 windows11很卡的解决方法
  12. IT 已成为最疯狂的加班行业,没有之一
  13. 基于django的视频点播网站开发-step15-项目部署
  14. 从《如何在只有一份错误的协议的情况下,做好网络编程》论人品的重要性
  15. zip_longest
  16. java 泛型中的上界(extend)和下界(super)
  17. 【ROM制作工具】如何美化ROM、集成高级设置等特色功能到刷机包教程
  18. SQL(进阶实战05)
  19. 关于js文本框数字校验
  20. Windows上如何手动安装Perl模块(ActivePerl)

热门文章

  1. python-pygame实现飞机大战-3-发射子弹以及击中敌机
  2. ecg 幅度_ECG(心电图)
  3. java 拨通电话_android应用调用系统拨打电话
  4. 羲和能源大数据平台使用教程
  5. cento任务栏如何固定在下方_桌面越乱越聪明?爱因斯坦是如何管理桌面的
  6. 你真的了解计算机病毒吗?内容很“干”,记得喝水
  7. trim()函数的含义及使用方法
  8. send 命令 linux,linux的send命令
  9. 20200929 008.海龟绘图_画出奥运五环图
  10. oracle显示上午下午,Oracle实现使用时间函数实现输出“上午好/...