一、工作环境准备:
Python 2.7,selenium(可以pip安装),Chrome(浏览器插件我用的是谷歌,火狐也有相应的插件)
二、登录(前面说过了就不详说了):
不过这次是把它给封装好了的,首先是登录,这个我更改了访问的url,到时候可以直接进去访问好友空间,然后到留言板界面。
def qz_login(qq):
driver.get('https://user.qzone.qq.com/{}'.format(qq))
time.sleep(5)
try:
driver.find_element_by_id('login_div')
a = True
except Exception, e:
a = False
if a==True:
driver.switch_to_frame('login_frame')
driver.find_element_by_id('img_out_***').click()#***本地常用登录QQ号
time.sleep(3)
print 'loading...'
driver.implicitly_wait(3)
三、抓取好友留言板:
我是从
这里的留言板作为入口的,
留言板链接
点击这个留言板就到了留言板这里,
留言板
你会发现留言板每一页的留言都在li里面,在主页到留言板界面的,拿到每一个留言,然后就写入到本地TXT文本,
def logToFile(content,name='FileY.txt'):
f = open(name,'a+')
try:
print content
f.write(content+'\n')
except Exception, e:
print 'Exception:',str(e)
finally:
f.close()
def get_message():
while True:
try:
driver.implicitly_wait(3)
driver.find_element_by_link_text('留言板').click()
break
except Exception, e:
print e
driver.save_screenshot(u'D:\\正在登陆.png')
time.sleep(5)
driver.implicitly_wait(3)
time.sleep(5)
driver.switch_to_frame('tgb')
# 好友留言板,页数是自己手动输入的
def getMessData(npage):
get_message()
global driver
num = 1
while (num<npage):
num+=1
time.sleep(3)
menu = driver.find_element_by_id('ulCommentList')
logToFile(menu.text)
p='QZBlog.Util.PageIndexManager.goDirectPage('+str(num)+')'
#driver.execute_script调用页面的js
driver.execute_script(p+';return false;')
if num==npage:
time.sleep(2)
memu=driver.find_element_by_id('ulCommentList')
logToFile(memu.text)
现在再调用函数,一切就OK啦。。。
if __name__ == '__main__':
qz_login('***')#***-好友QQ号
getMessData(***)#***留言板的页数
现在一切都完了哈,是不是很简单呢,最后最后,很重要的,一点要关闭浏览器。不然电脑会很卡的。
driver.close()
driver.quit()