import requests
from selenium import webdriver
import time
from bs4 import BeautifulSoup
def login(qqno):
#这句我也不知道干啥哎 貌似可有可无 有知道的朋友们可以留言噢
chromedriver = r"C:\Users\lenovo\Anaconda3\chromedriver.exe"
#打开浏览器
browser = webdriver.Chrome(chromedriver)
#进入好友说说页
browser.get('https://user.qzone.qq.com/'+str(qqno)+'/311')
#将浏览器最大化,这步也可有可无啦
browser.maximize_window()
time.sleep(2)
#切换到目标元素所在的frame
browser.switch_to.frame('login_frame')
#然后下面一大串就是为了模拟浏览器登录账号
browser.find_element_by_id('switcher_plogin').click()
browser.find_element_by_id('u').clear()
browser.find_element_by_id('u').send_keys('自己qq号')
browser.find_element_by_id('p').clear()
browser.find_element_by_id('p').send_keys('自己qq密码')
browser.find_element_by_id('login_button').click()
time.sleep(3)
"""隐式等待
当使用了隐士等待执行测试的时候,如果 WebDriver没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常
换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是0,一旦设置了隐式等待,则它
存在整个 WebDriver 对象实例的声明周期中,隐式的等到会让一个正常响应的应用的测试变慢,它将会在寻找每个元素的时候都进行等待,
这样会增加整个测试执行的时间。"""
browser.implicitly_wait(3)
#这步异常处理主要是为了判断是否进入了好友空间 因为有些好友会设置权限
try:
browser.find_element_by_id('QM_OwnerInfo_Icon')
b = True
page = 1
except:
b = False
if b == True:
#切换到目标元素所在的frame
browser.switch_to.frame('app_canvas_frame')
while page:
#获取说说内容
content = browser.find_elements_by_css_selector('.content')
#获取对应说说的日期
date = browser.find_elements_by_css_selector('.c_tx.c_tx3.goDetail')
k = 1
for con,da in zip(content,date):
#下面这个为了判断好友说说里的是否有文字 一般没文字的都是转发
if con.text == '':
data = {
'内容':'这货转发了一条说说但是它没有转发配字',
'日期':da.text
}
with open('说说.txt','a',encoding = 'utf-8') as f:
f.write("{0:2}\t{1}\t{2:10}\n".format(k,'这货转发了一条说说但是它没有转发配字',da.text,chr(12288)))
print(data)
else:
data = {
'内容':con.text,
'日期':da.text
}
with open('说说.txt','a',encoding = 'utf-8') as f:
f.write("{0:2}\t{1}\t{2:10}\n".format(k,con.text.replace('\n','\\'),da.text,chr(12288)))
print(data)
k = k+1
#下面这个异常处理主要是为了判断是否到了最后一页,如果是最后一页了就跳出while循环
try:
page = browser.find_element_by_link_text(u'下一页')
page.click()
time.sleep(5)
except:
break
#这下面被注释掉的主要是为了获取cookies 但是没什么用就被我注释掉了
'''cookie = browser.get_cookies()
cookie_dict = []
for c in cookie:
ck = "{0}={1};".format(c['name'],c['value'])
cookie_dict.append(ck)
i = ''
for c in cookie_dict:
i = i+c
browser.close()
browser.quit()
return i'''
def main():
friendsqqno = '好友qq号'
login(friendsqqno)
if __name__ == '__main__':
main()
这么三天就搞出来这么一个小东西,输出来的格式其实也没有规范的。跟有几个朋友说了,她们都觉得我好厉害,其实只有我自己知道,我真的很菜,而且只是刚起步。要继续努力呀!
大家想要相互交流可以留言噢!