【python爬虫】爬取QQ空间说说

前言

虽然扒qq空间不是很地道,但咱还是干干吧……正好也是闲来无事,我这个应该不会被别人发现 tao)

技术路线

selenium + beautifulsoup + pyautogui
selenium模拟浏览器
beautifulsoup解析文本
pyautogui 负责下拉

需要注意的点

QQ空间在加载的时候,是一部分一部分加载的。也就是说当下拉到最底的时候,才可以在网页中刷新出来新的内容,并且一部分说说消除掉。
如下图
【python爬虫】爬取QQ空间说说_第1张图片
下拉后
【python爬虫】爬取QQ空间说说_第2张图片
注:一个ul对应着一组说说

代码

了解了上面的现在就开始写代码
代码结构:

QQ空间解析

  • main.py
  • jiexi.py
  • data
# QQ空间解析/main.py
# encoding=utf-8
from selenium.webdriver import Edge
import time
import jiexi
import pyautogui
driver = Edge()
# yourqq写你的QQ号
driver.get("https://user.qzone.qq.com/yourqq/infocenter")
time.sleep(10)
for i in range(10000):
	time.sleep(1)
	html=driver.find_element_by_xpath("//*").get_attribute("outerHTML")
	# 解析html
	jiexi.get(html)
	pyautogui.scroll(-7500)
	# 向下滑动
	# time.sleep(1)
driver.close()
#QQ空间解析/jiexi.py
#encoding = utf-8
from bs4 import BeautifulSoup as BS
import re

# 正则表达式进行匹配
def getText(match,text,group=1):
	tmp=re.search(match,text,re.S)
	if (tmp==None):
		return ""
	else:
		return tmp.group(group)

def get(html):
	soup=BS(html,"html.parser")
	shuoshuos=soup.find_all(name="li",attrs={"class":"f-single f-s-s"})
	for i in range(len(shuoshuos)):
		text=shuoshuos[i].get_text()
		user=getText(r"  (.*?)[  , ].*(\d\d:\d\d)",text)
		time=getText(r"  (.*?)[  , ].*(\d\d:\d\d)",text,group=2)
		llcs=getText(r"浏览(\d*?)次",text)
		haoyou=getText(r"\+1(.*?)[共,等](\d+)人觉得很赞",text).split("、")
		likes=getText(r"\+1(.*?)[共,等](\d+)人觉得很赞",text,group=2)
		dic={"user":user,"time":time,"llcs":llcs,"haoyou":haoyou,"likes":likes}
		# print("data/"+user+time+".txt")
		#在data文件夹下面保存
		with open("data/"+user+time.replace(":","")+".txt","w",encoding="utf-8") as f:
			f.write(str(dic))

然后运行main.py,然后可能需要你登录一下,让她爬一段时间(几个小时)。然后大功告成!
下图是data文件夹下面的一些生成txt文件
【python爬虫】爬取QQ空间说说_第3张图片
txt内部内容
分别对应

  • QQ昵称
  • 发送时间
  • 浏览量
  • 部分点赞好友
  • 点赞数量

QQ说说具体内容我没爬,毕竟还是别啥都爬 /脸红
【python爬虫】爬取QQ空间说说_第4张图片
本人菜鸡一枚,感谢各位大佬能看到最后!
哈哈哈哈

你可能感兴趣的:(好玩程序)