1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 爬虫实战-python爬取QQ群好友信息

爬虫实战-python爬取QQ群好友信息

时间:2020-03-16 07:08:35

相关推荐

爬虫实战-python爬取QQ群好友信息

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

大概思路

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

一、模拟登陆

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

driver=webdriver.Firefox()

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

driver.get(url)

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

二、下拉加载页面

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

defscroll_foot(driver):js="varq=document.documentElement.scrollTop=100000"returndriver.execute_script(js)

三、保存网页源码

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

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

四、提取信息

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

frombs4importBeautifulSoupwithopen('html.txt','r',encoding='utf-8')asf:res=f.read()soup=BeautifulSoup(res,"lxml")html=soup.select("td")#number为群成员数foriinrange(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练手项目实战》,在实战中成长。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。