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

这篇具有很好参考价值的文章主要介绍了Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

browser.find_element_by_xpath(‘.//ul[@id=“headerNav”]/li[4]’).click()

8.点击群管理之后,进入群管理界面,我们需要的是成员管理

Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium

点击之后,我们找到成员管理标签并点击

WebDriverWait(browser, 1000).until(

EC.presence_of_all_elements_located(

(By.CLASS_NAME, ‘color-tit’)

)

)

browser.find_element_by_class_name(‘color-tit’).click()

9.点击成员管理之后会重新新建一个窗口,这个时候就会出现句柄,我们需要将当然窗口的句柄切换到新打开的这个界面,不然的话,是获取不到新打开界面的信息的,注释已经写了

Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium

打印全部窗口句柄

print(browser.window_handles)

打印当前窗口句柄

print(browser.current_window_handle)

注意这里点击成员管理之后会自动跳转到一个新窗口打开这个页面

所以我们需要将窗口句柄切换到这个新窗口

browser.switch_to.window(browser.window_handles[1])

解释一下browser.switch_to.window是获取当前一共有几个窗口

这里是2个

browser.switch_to.window这个是指定当前游标切换到哪个窗口

其实也可以这么写

all_window = browser.switch_to.window返回的是一个列表

browser.switch_to.window(all_window[1])

效果是一样的

10.我们需要的是我加入的群信息

Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium

切换句柄之后,我们显示等待窗口出来

WebDriverWait(browser, 1000).until(

EC.presence_of_all_elements_located(

(By.CLASS_NAME, ‘my-all-group’)

)

)

筛选出我加入的群标签

lis = browser.find_elements_by_xpath(‘.//div[@class=“my-all-group”]/ul[2]/li’)

11.遍历列表,取出信息

遍历

num= 0

while True:

if num == len(lis):

break

try:

按顺序选择群并获取信息

先点击该群获取成员信息

lis[num].click()

显示等待信息加载完成

WebDriverWait(browser, 1000).until(

EC.presence_of_all_elements_located(

(By.CLASS_NAME, ‘list’)

)

)

获取该群当前有多少人,后面翻页需要

groupMemberNum = eval(browser.find_element_by_id(‘groupMemberNum’).text)

每一次翻页都会刷新21条信息,所以写个循环

这里加1是因为假如一个群有36人,那么count=1,如果循环的话就不会翻页了

也就是只能抓到一页的数据,大家可以自己想想其中的流程就知道了

count = groupMemberNum // 21 + 1

这里我只爬取每个群的一部分,如果想爬取全部成员信息

请注释下面的if语句

if count > 2:

count = 1

每次循环都进行翻页

while count:

count -= 1

browser.execute_script(‘document.documentElement.scrollTop=100000’)

time.sleep(2)

time.sleep(2)

开始获取成员信息

trs = browser.find_elements_by_class_name(‘mb’)

if trs:

遍历

for tr in trs:

tds = tr.find_elements_by_tag_name(‘td’)[2:]

if len(tds) == 8:

qq网名

qq_name = tds[0].text

群名称

group_name = tds[1].text

qq号

qq_number = tds[2].text

性别

gender = tds[3].text

qq年龄

qq_year = tds[4].text

入群时间

join_time = tds[5].text

等级(积分)

level = None

最后发言时间

end_time = tds[6].text

声明一个字典存储数据

data_dict = {}

data_dict[‘qq_name’] = qq_name

data_dict[‘group_name’] = group_name

data_dict[‘qq_number’] = qq_number

data_dict[‘gender’] = gender

data_dict[‘qq_year’] = qq_year

data_dict[‘join_time’] = join_time

data_dict[‘level’] = level

data_dict[‘end_time’] = end_time

print(data_dict)

elif len(tds) == 9:

qq网名

qq_name = tds[0].text

群名称

group_name = tds[1].text

qq号

qq_number = tds[2].text

性别

gender = tds[3].text

qq年龄

qq_year = tds[4].text

入群时间

join_time = tds[5].text

等级(积分)

level = tds[6].text

最后发言时间

end_time = tds[7].text

声明一个字典存储数据

data_dict = {}

data_dict[‘qq_name’] = qq_name

data_dict[‘group_name’] = group_name

data_dict[‘qq_number’] = qq_number

data_dict[‘gender’] = gender

data_dict[‘qq_year’] = qq_year

data_dict[‘join_time’] = join_time

data_dict[‘level’] = level

data_dict[‘end_time’] = end_time

data_list.append(data_dict)

print(data_dict)

browser.find_element_by_id(‘changeGroup’).click()

time.sleep(3)

WebDriverWait(browser, 1000).until(

EC.presence_of_all_elements_located(

(By.CLASS_NAME, ‘ui-dialog’)

)

)

lis = browser.find_elements_by_xpath(‘.//div[@class=“my-all-group”]/ul[2]/li’)

num += 1

except Exception as e:

lis = browser.find_elements_by_xpath(‘.//div[@class=“my-all-group”]/ul[2]/li’)

num += 1

continue

完整代码附上

导入需要的包

爬取qq群的成员信息

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

import time

import json

import csv

开始登陆

def login_spider():

url = ‘https://qun.qq.com/’

构建谷歌驱动器

browser = webdriver.Chrome()

请求url

browser.get(url)

模拟登陆,首先找到登陆的id,并点击

browser.find_element_by_css_selector(‘#headerInfo p a’).click()

点击之后会弹出一个登陆框,这时候我们用显示等待来等待这个登陆框加载出来

WebDriverWait(browser, 1000).until(

EC.presence_of_all_elements_located(

(By.CSS_SELECTOR, ‘#loginWin iframe’)

)

)

print(‘登陆框已加载’)

登陆框加载之后,我们发现整个登陆框其实就是另一个网网页

如果在原网页操作这个登陆框的话,是不能操作的

所以我们只需要提取iframe标签的src属性,然后再去访问这个url即可实现

自动登陆

找到iframe标签并获取是如此熟悉

iframe_url = browser.find_element_by_css_selector(‘#loginWin iframe’).get_attribute(‘src’)

再访问这个url

browser.get(iframe_url)

找到快捷登陆的头像并点击

首先用显示等待这个头像已经加载完成

WebDriverWait(browser, 1000).until(

EC.presence_of_all_elements_located(

(By.ID, ‘qlogin_list’)

)

)

browser.find_element_by_css_selector(‘#qlogin_list a’).click()

print(‘登陆成功’)

return browser

切换句柄操作

def switch_spider(browser):

登陆成功之后,我们就找到群管理的标签并点击,首先等待这个元素加载完成

WebDriverWait(browser, 1000).until(

EC.presence_of_all_elements_located(

(By.XPATH, ‘.//ul[@id=“headerNav”]/li[4]’)

)

)

browser.find_element_by_xpath(‘.//ul[@id=“headerNav”]/li[4]’).click()

点击之后,我们找到成员管理标签并点击

WebDriverWait(browser, 1000).until(

EC.presence_of_all_elements_located(

(By.CLASS_NAME, ‘color-tit’)

)

)

browser.find_element_by_class_name(‘color-tit’).click()

打印全部窗口句柄

print(browser.window_handles)

打印当前窗口句柄

print(browser.current_window_handle)

注意这里点击成员管理之后会自动跳转到一个新窗口打开这个页面

所以我们需要将窗口句柄切换到这个新窗口

browser.switch_to.window(browser.window_handles[1])

解释一下browser.switch_to.window是获取当前一共有几个窗口

这里是2个

browser.switch_to.window这个是指定当前游标切换到哪个窗口

其实也可以这么写

all_window = browser.switch_to.window返回的是一个列表

browser.switch_to.window(all_window[1])

效果是一样的

return browser

开始采集数据

def start_spider(browser):

声明一个列表存储字典

data_list = []

切换句柄之后,我们显示等待窗口出来

WebDriverWait(browser, 1000).until(

EC.presence_of_all_elements_located(

(By.CLASS_NAME, ‘my-all-group’)

)

)

筛选出我加入的群标签

lis = browser.find_elements_by_xpath(‘.//div[@class=“my-all-group”]/ul[2]/li’)

遍历

num = 0

while True:

try:

按顺序选择群并获取信息

先点击该群获取成员信息

lis[num].click()

显示等待信息加载完成

WebDriverWait(browser, 1000).until(

EC.presence_of_all_elements_located(

(By.CLASS_NAME, ‘list’)

)

)

获取该群当前有多少人,后面翻页需要

groupMemberNum = eval(browser.find_element_by_id(‘groupMemberNum’).text)

每一次翻页都会刷新21条信息,所以写个循环

这里加1是因为假如一个群有36人,那么count=1,如果循环的话就不会翻页了

也就是只能抓到一页的数据,大家可以自己想想其中的流程就知道了

count = groupMemberNum // 21 + 1

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium
Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium
Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium
Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium
Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium
Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium文章来源地址https://www.toymoban.com/news/detail-860660.html

向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1),2024年程序员学习,python,爬虫,selenium

到了这里,关于Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Python爬虫入门:使用selenium库,webdriver库模拟浏览器爬虫,模拟用户爬虫,爬取网站内文章数据,循环爬取网站全部数据。

    Python爬虫入门:使用selenium库,webdriver库模拟浏览器爬虫,模拟用户爬虫,爬取网站内文章数据,循环爬取网站全部数据。

    *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径。 目录 准备工具: 思路: 具体操作: 调用需要的库: 启动浏览器驱动: 代码主体:  完整代码(解析注释): Python环境; 安装selenium库; Python编辑器; 待爬取的网站; 安装好的浏览器; 与浏览器版本相对应的

    2023年04月24日
    浏览(41)
  • 快乐学Python,使用爬虫爬取电视剧信息,构建评分数据集

    快乐学Python,使用爬虫爬取电视剧信息,构建评分数据集

    在前面几篇文章中,我们了解了Python爬虫技术的三个基础环节:下载网页、提取数据以及保存数据。 这一篇文章,我们通过实际操作来将三个环节串联起来,以国产电视剧为例,构建我们的电视剧评分数据集。 收集目前国产电视剧的相关数据,需要构建国产电视剧和评分的

    2024年01月21日
    浏览(13)
  • 【Python爬虫开发实战②】使用urllib以及jsonpath爬取即将上映电影信息

    【Python爬虫开发实战②】使用urllib以及jsonpath爬取即将上映电影信息

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 💡 往期推荐 : ⭐️首先,我们前面讲了多篇基础内容: 【Python爬虫开发基础④】爬虫原理 【Python爬虫开发基础⑤】HTML概述与基本标签详解 【P

    2024年02月12日
    浏览(11)
  • 爬虫与数据分析项目实战2.1 Selenium爬取Boss招聘信息

    完成: 1.爬取信息 2.基于爬取结果筛选符合条件的信息    岗位名称、薪资、岗位要求、地区、公司名称、公司规模、细节链接 3.筛选base杭州的岗位保存到csv文件中 But容易出现网络不稳定造成的无法定位元素所在位置的情况,小范围爬取可以 4.基于csv分析后续

    2024年02月08日
    浏览(14)
  • Python网络爬虫逆向分析爬取动态网页、使用Selenium库爬取动态网页、​编辑将数据存储入MongoDB数据库

    Python网络爬虫逆向分析爬取动态网页、使用Selenium库爬取动态网页、​编辑将数据存储入MongoDB数据库

    目录 逆向分析爬取动态网页 了解静态网页和动态网页区别 1.判断静态网页  2.判断动态网页  逆向分析爬取动态网页 使用Selenium库爬取动态网页 安装Selenium库以及下载浏览器补丁 页面等待  页面操作 1.填充表单 2.执行JavaScript 元素选取 Selenium库的find_element的语法使用格式如下

    2024年02月15日
    浏览(35)
  • 2023最新详细:使用selenium携带cookie登录QQ空间,爬取指定好友空间说说照片

    2023最新详细:使用selenium携带cookie登录QQ空间,爬取指定好友空间说说照片

    写在前面:最近学了爬虫,正好爬取一下指定好友的所有空间说说照片,之前使用selenium账号密码登录,模拟登录次数过多,会加验证码,甚至导致QQ冻结,所以采用cookie登录 思路 首先获取cookie,使用cookie登陆之后通过空间好友栏搜索指定好友,并进入好友空间,从而爬取说

    2024年02月13日
    浏览(10)
  • python爬虫进阶篇:Scrapy中使用Selenium+Firefox浏览器爬取沪深A股股票行情

    上篇记录了Scrapy搭配selenium的使用方法,有了基本的了解后我们可以将这项技术落实到实际需求中。目前很多股票网站的行情信息都是动态数据,我们可以用Scrapy+selenium对股票进行实时采集并持久化,再进行数据分析、邮件通知等操作。 详情请看上篇笔记 items middlewares setti

    2024年02月04日
    浏览(17)
  • 【python爬虫】——历史天气信息爬取

    【python爬虫】——历史天气信息爬取

    在2345天气信息网2345天气网 依据 地点 和 时间 对相关城市的历史天气信息进行爬取。 网页使用get方式发送请求,所需参数包括areaInfo[areaId]、areaInfo[areaType]、date[year]、date[month],分别为城市id、城市类型,年、月。

    2024年02月07日
    浏览(13)
  • Python实战:使用selenium及BeautifulSoup4进行BOOS直聘信息爬取与数据累积【附源码】

    操作系统 :适用于Windows、macOS、Linux。 Python版本 :Python 3.6及以上。 依赖库 : selenium:用于模拟浏览器操作。 webdriver_manager:自动管理驱动程序。 BeautifulSoup4:解析HTML页面。 pandas:数据处理和CSV文件操作。 logging:日志记录。 本项目旨在通过Selenium模拟用户浏览器行为,获

    2024年04月27日
    浏览(13)
  • python爬虫实战 scrapy+selenium爬取动态网页

    python爬虫实战 scrapy+selenium爬取动态网页

    最近学习了scrapy爬虫框架,想要找个目标练练手。由于现在很多网页都是动态的,因此还需要配合selenium爬取。本文旨在记录这次学习经历,如有疑问或不当之处,可以在评论区指出,一起学习。 对scrapy不了解的同学可以阅读这篇文章 爬虫框架 Scrapy 详解,对scrapy框架介绍的

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包