一个简单的不用cookie的人人网状态爬取的python爬虫,使用beautifulsoup

原创 2015年11月21日 14:57:54

昨天晚上闲着无聊翻翻人人,想来过去几年一直用的人人,里面好多喜怒哀乐。正好最近在写爬虫,干脆把它都弄下来留着吧。于是开工。


爬取的是我自己的全部已经发过的状态。


先是,向所有人一样,百度了一下,有没有现成的解决方案,确实有不少,说要先登录,然后再保留cookie,然后再用什么正则表达式,好是麻烦。


然后登录人人,分析它的网页结构,还是挺麻烦的,状态的界面都是用ajax生成的,没法直接一页一个url地获取。


直到看见一篇,说可以登录3g.renren.com,果然机智,上去看了一下, 特别简单,每一页一个url。最关键的是,它url里面直接包含你的账号和加密之后的密码,通过url就能直接访问了,不用登陆,也不用什么cookie了。


举例:


你登陆之后,点击状态,就能得到这么一个url:


http://3g.renren.com/status/getdoing.do?curpage=5&id=你的账号+blabla 


其中,curpage就是当前页,这样,对于每个页,直接改curpage的号就行了。后面的内容是你的加密之后的密码等信息。


页面长成这个样子



使用beautifulsoup解析,很快就搞定了。


来,上代码:



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

__author__ = 'PrlNcE'


import urllib2, gzip, StringIO, re

import urllib
from bs4 import BeautifulSoup
from multiprocessing import Pool as ProcessPool
from multiprocessing.dummy import Pool as ThreadPool
from multiprocessing.queues import SimpleQueue as Queue
from multiprocessing import freeze_support
from multiprocessing import Manager
import time
import re
import sys
import MySQLdb
#import DBconnecter

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

#print sys.getdefaultencoding()


def download_html_page(page_num):
    try:
        timeout = 2
        url = 'http://3g.renren.com/status/getdoing.do?curpage=' + page_num +'&id=【blabla,自己补】

        response = urllib2.urlopen(url,timeout = timeout)
        html = response.read()

        #print html

        soup = BeautifulSoup(html,"html.parser")
        #print soup.head.title

        res = ''
        status_list = soup.find('div',class_ = 'list')
        for status in status_list:
            #print status.find('p',class_ = 'time').string
            #print status
            temp = (str)(status)
            temp = temp.split('<')
            
            #time是该状态发表的时间
            time = status.find('p',class_ = 'time')
            t_res = ''
            
            if time:
                t_res = time.string
                
            for i in temp:
                if not i:
                    continue
                    
                #下面的代码是寻找html语句中的你所发的内容的,也就是去掉所有<>内包含的标签等内容的    
                index = i.find('>')
                t = i[index+1:]
                if t.find('|')>-1:
                    break
                #print t
                t_res += t
                t_res.replace('\n','')
            #print t_res
            res += t_res + '\n'
        print res
        return res


    except Exception as e:
        print 'URL Request Error:', e





print 'Let us begin!'
print '你好'

res = ''
for i in range(1,1000):
    print i
    res += download_html_page(str(i))

mdir='D:\\renren_status.txt'
file=open(mdir,'w')
file.write(res)
file.close()




相关文章推荐

Python实现人人网爬虫,爬取用户所有状态信息。

之前没有怎么用过python,也没写过爬虫,最近几天抽空学习了一下,写了个人人网的爬虫练了练手。     用了BeautifulSoup4包来解析HTML标签,Beautiful Soup 是用 P...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

人人网用户信息爬虫

人人网用户信息爬虫一直想做一个项目,爬取各个社交网站上与我们学校有关的用户的各种信息,然后分析用户行为。由于人人网的爬虫比较简单,所以最先从人人网爬起。import re ...

关于python3实现cookie登录问题

尝试写了个小爬虫,抓点虎扑上面的发帖信息,但发现查看到一定页数后以及一些用户资料信息时,需要进行用户登录。 于是在网上找了些资料,发现总是失败,而且虎扑的登录有15分钟重复登录则要输入验证码的限制。...

Python网络爬虫——Requests第三方库

Requests库的安装 windows系统 利用管理员身份运行命令提示符;输入pip install requests 如图: Linux系统 同理输入命令sudo pip install ...

什么是cookie?python中cookielib简单了解

什么是Cookie? 当用户通过浏览器首次访问一个域名时,访问的WEB服务器会给客户端发送数据,以保持WEB服务器与客户端之间的状态保持,这些数据就是Cookie,它是 Internet 站点创建的...

python实现人人网用户数据爬取及简单分析

这是之前做的一个小项目,这几天刚好整理了一些相关资料,顺便jiuz

python 登录人人网爬取源码

上一篇大致介绍了python爬取网页的两种简单的情况;

Python3.7 爬虫(三)使用 Urllib2 与 BeautifulSoup4 爬取网易云音乐歌单

版权声明:本文为 wintersmilesb101 -(个人独立博客– http://wintersmilesb101.online 欢迎访问)博主原创文章,未经博主允许不得转载。 废话在前面的的博客...

使用python在人人网自动发状态

  • 2011年11月08日 14:27
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个简单的不用cookie的人人网状态爬取的python爬虫,使用beautifulsoup
举报原因:
原因补充:

(最多只允许输入30个字)