学习python

好久没写博文了,最近捣鼓了一下python,好像有点上瘾了,感觉python比js厉害好多,但是接触不久,只看了《[大家网]Python基础教程(第2版)[www.TopSage.com]》的前7章,好多东西还不会,能做的也比较少。我想做的是爬QQ空间,然后把空间里的留言,说说拷下来,已经成功做到了,只是,拷下来是word文档,看着没有在线看那么有感触,有些话,觉得不像自己会说的。

我花了好多时间,幸好最近清闲,有时间给我慢慢学。一开始,我使用urllib去登陆QQ空间:

def getCookieOpener():
    postUrl="http://qzone.qq.com"
    cj = cookielib.LWPCookieJar()
    cookie_support = urllib2.HTTPCookieProcessor(cj)
    opener = urllib2.build_opener(cookie_support)
    postData={
        "app":"adv",
        "return":"http://user.qzone.qq.com/",
        "username":"登陆名",
        "password":"登陆密码"
    }
    postData = urllib.urlencode(postData)
    loginRequest = opener.open(postUrl,postData)
    return opener

会报错,建议我登陆手机端页面,几番尝试,都不行,我去百度,果然,在我前面已经有好多人实践过了。查到了使用selenium中的webdriver库模拟浏览器操作,第六感告诉我,这个非常好,可以做很多事情。立马在cmd里安装这个包:pip install selenium,然后研究了下网上的一个例子:http://www.zh30.com/python-selenium-qzone-login.html,发现selenium的使用方法非常简单,查找元素并点击之类的操作和js有点相似,看完,开始自己动手,结果报错了,无论是尝试driver = webdriver.Chrome()还是driver = webdriver.Firefox(),都是报错:

我查到模拟谷歌浏览器要装个chromedriver.exe来辅助,但是火狐没说需要耶,猜想是不是要装个python3版本才行,目前用的是python2.7,结果还是报一样的错误,实在没辙了,就装了个chromedriver.exe,模拟谷歌,毕竟谷歌浏览器我用得最多。python3的语法和python2有区别,最先发现的是print方法。原来,新版的火狐浏览器也需要安装点什么东西才行,有个新加入博客的伙伴回复了我的评论:

原谅我的孤闻,其实很多东西我都不懂。

好了,程序终于能跑了,神奇的事情发生了,程序打开了一个新的谷歌页面,按照代码所写的打开了QQ登陆页,然后自动填进了名称和密码,自动点击提交按钮,成功登陆了,我愣了愣,原来所说的模拟登陆是这么的可视化,真好。然后我开始研究怎么把自己的所有留言都导出来。先说一个把内容下载到txt或者其他格式的方法:

#日志文件
def logToFile(content,name="liuyan.txt"):
    fileH=open(name,"a+")
    try:
        print(content)
        fileH.write(content+"\n")
    except Exception as e:
        print("except:"+str(e))
    finally:
        fileH.close()

接下来就是获取问题了,我要获取li里的内容,然后翻到下一页,继续获取,直到全部获取完毕,留言板html结果如下图:

我的核心代码是:

def getData():
    num=1
    while (num<265):
        num+=1
        time.sleep(2)
        memu=driver.find_element_by_id(‘ulCommentList‘)
        logToFile(memu.text)
        p=‘QZBlog.Util.PageIndexManager.goDirectPage(‘+str(num)+‘)‘
        #driver.execute_script调用页面的js
        driver.execute_script(p+‘;return false;‘)
    if num==265:
        time.sleep(2)
        memu=driver.find_element_by_id(‘ulCommentList‘)
        logToFile(memu.text)

不需要直接获取每个li标签的内容,获取外层ul的文本即可,这种方法只能获取核心文字,图片无法拷贝,下载完的样子是这样:

拷完自己的,又去把闺蜜的留言拷了一份,她的留言比我多多了,因为她很喜欢自己去给自己留言,拷的速度还是蛮快的,如果我不用time.sleep(延时执行)会更快,但是不用延时,有时会报错,估计是页面元素还没加载出来,获取不到。要保持学习,好好努力,恩恩。

时间: 2024-10-13 04:58:46

学习python的相关文章

学习Python随想

进入大三之后进入了一周基本都是专业课的状态,虽然相比之前几个学期课时量减少了,但实际上学要学习的任务却大大增加了,而类似于Python,spss这一类的课程是之前之前并没有听说过的,但在上过两周之后发现,Python是类似于c语言一类的课程,而之前的c语言和数据结构学得并不好,所以其实在内心深处是有一丝丝的惧怕的,希望在实践课上能多做一些类似于第一次的学打代码的联系,多找找感觉. 课堂进度十分之快,时而跟得上时而跟不上,而一旦跟不上就会跟多米诺骨牌似的,影响接下来的课堂学习.在智慧云教室最大的感

【个人计划】告别英雄联盟,开始学习Python

不知不觉中接触英雄联盟已经快两年了,记得是大四那年找完工作,一下比较清闲,宿舍刚好有lol的氛围,于是乎,四个新手在何大神的带领下,走上了lol的道路.不得不说,从那以后,花费在lol上的时间太多啦,据我估计,个人玩了将近2000了吧,别看局数这么多,其实就是个渣渣,技术太菜了,这也就是我告别英雄联盟的原因啦,根本没有玩这个游戏的天赋,技术上没有一点点提高,一直就是在浪费时间罢了. 就我个人而言,1.在补兵方面,时好时坏,而且有时候性子急,不太注重前期的补兵发育,往往导致输的结局:2.游戏中大部

学习python第一天

学习Python第一天 Python小白,做Linux运维5年,纯系统运维已经不能满足日常工作需要,所以学习Linux运维开发入门级语言python 前言: Python, 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议. Python语法简洁清晰,特色之一是强制用空白符(white

重新学习python系列(一)? WTF?

重新学习python:两年前学了点python之后就一直没做做过啥项目, 基本上全忘光了,复习一下搞点事情 or |and & ord() ascii转16进制 chr()  16进制转ascii >>> u'ABC'.encode('utf-8') 'ABC' >>> u'中文'.encode('utf-8') '\xe4\xb8\xad\xe6\x96\x87' >>> 'abc'.decode('utf-8') u'abc' >&g

Python学习--Python基础语法

第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗口如下: Window上在安装Python时已经已经安装了默认的交互式编程客户端,提示窗口如下: 在Python提示符中输入一下文本,然后按回车查看运行结果: print 'hello world'; 输出: hello world 脚本式编程 让我们来写一个简单的Python脚本,所有的Pytho

几条学习python的建议

熟悉python语言, 以及学会python的编码方式. 熟悉python库, 遇到开发任务的时候知道如何去找对应的模块. 知道如何查找和获取第三方的python库, 以应付开发任务. 学习步骤 安装开发环境 如果你在window下, 去下载pythonxy安装起来, 然后运行python, 进入python解释环境. 如果你在ubuntu下, 执行: sudo apt-get install python, 然后在命令行下运行python, 进入python解释环境. 学习方法 作为一名成熟的

鱼C《零基础入门学习Python》10-17节课时知识点总结

第10讲:列表:一个打了激素的数组 1. 列表都可以存放一些什么东西?  我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型. 2. 向列表增加元素有哪些方法?  三种方法想列表增加元素,分别是:append().extend() 和 insert().    3. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?  append() 方法是将

学习python的小随笔

Python在课表中的名字是高级语言程序设计.上了两周的专业课,我想说我真的是想来学教育的,现在成了计算机了.我还想说,有没有一种可以用中文写程序的软件,有志向的大佬们赶紧弄个吧!       其实关于学习Python倒是不反感,无论是当初学习c++,还是现在学Python,都感觉这个东西挺有意思的.当你能把一个程序写出来并且运转成功之后,那种成就感是难以形容的.(哪怕是对着书敲上的)       希望老师教学中.把我们当做一个程序小白,很多老师以为学过了就精通了,可是事实不是那样.个人感觉Py

学习Python的第一课(简单的单元测试)

由于有C#开发基础,感觉学习Python应该不难,主要是一些语法了,再加上现在互联网这么发达. 感觉还是要有思路,否则学什么也只能是什么. 话不多说,简单发下这几天的学习成果吧: 第一次写博客,大家不要见笑啊 简单的语法就不多说了,随便搜搜就可以得到.() 单元测试来了: 要做两个测试: # 用于判断质数 import math def isPrime(n): print ("验证数字"+str(n)+"是否质数开始") print ("开平方:"

人在囧途——Java程序猿学习Python

引言 LZ之前其实一直对python都很好奇,只是苦于平时没有时间去了解它,因此趁着51假期这个机会,便迫不及待的开始了自己的探索.作为一个标准的Java程序猿,在了解python的过程当中,LZ遇到了很多囧事,接下来LZ就一一给大家说道说道.本文纯属看个乐子,非python教学. 囧事一:eclipse插件安装篇 由于LZ习惯了使用eclipse进行开发,因此对python的研究,还是希望可以在eclipse上进行试验.那么第一件事,自然是安装python的eclipse插件,于是百度.goo