python 爬虫1 开始,先拿新浪微博开始

刚刚开始学。

目的地是两个,一个微博,一个贴吧

存入的话,暂时还没想那么多,先存到本地文件夹吧

分词和推荐后面在整合

mysql mongodb hadoop redius 后面在用

我终于知道为什么大家都推荐用python写爬虫了。。。我擦,一些开源的包实在写的太好了

我开始I还百思不得其解的为什么要用python这样的语言。我真的用起来很”蛋疼“

而且,我用这门语言真的像我当初用c语言一样的用的。纯粹的用面向过程的思想写。

一点一点墨迹。。。虽然我知道他有面向对象的特性。。。但是怎么都觉得不能习惯,不要说和C# .net 来比

我觉得和java 的风格也相差很大啊。而且即使比c或者matlab 虽然编码很快。但是关键字和运行调试机制还不是很熟悉。。。

你懂的,我很痛苦

直到我调试模拟认证……做过的人肯定会有经验,我之前工作用.net 做过爬虫(当时也就有个概念),

后来在学习过程里又用java 写过爬虫,爬阿里速卖通,结果失败了(我现在明白当时为什么我失败了,我当时都已经拿到Outh的ssid了

这个ssid 是 验证用户密码正确后发回的授权代码,只要有这个全局就不用认证。可是就是跳不到指定的页面,,我现在觉得肯定是自动跳转location

搞鬼,当然可能还有cookie的原因)但是在python包里完美解决了这两个问题,完全不用你担心。所有的cookie从第一个页面到最后目的页面全部接住了

全部写到文件,而且,最重要的是从请求登陆到指定主页之间的授权跳转request(仅仅是head头之间的跳转,完全没有页面)完全被自动化处理了

就像浏览器自己处理一样,这让我很是大喜啊。省了很多中间页面模拟的麻烦啊!!!!!!!!!!!!!!!!!!!!!!!

ubuntu14.04 python 自带,

安装了一个beautifulsoup 的 解析器 ,这里我装的是新版本,不是apt-get自带的版本

#安装版本4apt-get install python-bs4 python-bs4-doc

开始

import cookielibimport osimport reimport urllibimport urllib2import mathauth_url = ‘http://www.weibo.cn’home_url = ‘http://www.weibo.cn’;filename=’FileCookieJar.txt’#正则表达式一定要从小往大了写,先配对好配对的部分,先配对特征突出的部分,在往大了写,不然根本写不出来

#[\u4E00-\u9FA5] 这个表示中国字, 之前是没有加一对小括号的,加上表示取出group,在模式串前面写上u 表示unicode 编码的意思?

#之前的大部分例子都是写上个r

reg=u"<a href=(‘http://login.weibo.cn/[^\u4E00-\u9FA5]*?)[>]+?[\u4E00-\u9FA5]{2}</a>"pattern=re.compile(reg)req = urllib2.Request(home_url)req.add_header(‘User-Agent’, ‘Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)’)

#这一步是把cookies 写入相应的文件

ckjar = cookielib.MozillaCookieJar(filename)ckproc = urllib2.HTTPCookieProcessor(ckjar)opener = urllib2.build_opener(ckproc)f = opener.open(req)

#把吃下来的网页写成utf-8 的格式htm = f.read().decode(‘utf-8’)f.close()ckjar.save(ignore_discard=True, ignore_expires=True)print htm#如果要用group 就不能写findall,要用search 或者写finditer 这两个返回的都是match 对象,后面的返回的应该是match列表

#findall 返回的是列表不是match列表 ,finditer 返回的结果可以用 遍历 for match in result : print match.group(1)loginweb=pattern.search(htm).group(1)print loginweb

#表示从第一个取到倒数第二个loginweb=loginweb[1:-1]print loginwebparams=loginweb.split(‘;’)for param in params: print paramwl=WeiboLogin(loginweb,"","")wl.getweibologin()

这里补充一下:文件头一定要加:

#!/usr/bin/env python#_*_ coding: utf-8_*_

不然中文的注释都会报错

接着用上了面向对象的思想

新建了一个类,这也是痛苦的作死过程,但是好歹最后学到了东西

#类会先执行这个函数,构造函数初始化,这个可以自己改,可以重载

def __init__(self, urlse,user, pwd): self.url=urlse

#定义拿到登陆页面的方法,想拿到第一步cookie

def getweibologin(self): filename=’FileCookieJar.txt’ ckjar = cookielib.MozillaCookieJar(filename) print self.url req = urllib2.Request(self.url) req.add_header(‘User-Agent’, ‘Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)’) opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(ckjar) ) f = opener.open(req) htm = f.read().decode(‘utf-8’) f.close() ckjar.save(ignore_discard=True, ignore_expires=True) self.loginweb1(htm)

#模拟登陆的方法

def loginweb1(self,sweb): soup=BeautifulSoup(sweb) ##这里要用find不用findAll,因findall 拿到的是一系列标签的list

充满了恐惧的声音,一种不确定的归宿的流动。

python 爬虫1 开始,先拿新浪微博开始

相关文章:

你感兴趣的文章:

标签云: