一个简单的不用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()




网页爬虫之cookie自动获取

本文实现cookie的自动获取,及cookie过期自动更新。 社交网站中的很多信息需要登录才能获取到,以微博为例,不登录账号,只能看到大V的前十条微博。保持登录状态,必须要用到Cookie。以登录w...
  • qq_30175203
  • qq_30175203
  • 2016年08月03日 16:45
  • 15696

Python结合BeautifulSoup抓取知乎数据

本文主要介绍利用Python登录知乎账号,抓取其中的用户名、用户头像、知乎的问题、问题来源、被赞数目、以及回答者。其中数据是配合Beautiful Soup进行解析的。 首先,要解决的是知乎登录问题。...
  • u012286517
  • u012286517
  • 2016年04月21日 19:25
  • 10815

requests抓取需登录(cookie)的页面

之前用requests 比如网址缩短,再比如自动识别网站友情链接,并自动识别网站RSS地址,还有微信公共平台api Python(bottle)版 都是抓取不需要登录的页面内容。 两周前使用...
  • chenlei_525
  • chenlei_525
  • 2016年03月30日 10:46
  • 880

python 登录人人网爬取源码

上一篇大致介绍了python爬取网页的两种简单的情况;
  • u013652219
  • u013652219
  • 2014年07月10日 17:03
  • 1520

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

昨天晚上闲着无聊翻翻人人,想来过去几年一直用的人人,里面好多喜怒哀乐。正好最近在写爬虫,干脆把它都弄下来留着吧。于是开工。 爬取的是我自己的全部已经发过的状态。 先是,向所有人一样...
  • sscssz
  • sscssz
  • 2015年11月21日 14:57
  • 1177

利用cookie爬取页面

在登录网站的过程中,有的网页只有通过登录之后,才能显示出来。并且有的网页登录和不登录是不一样的。如果通过爬虫抓取的话,可以通过先登录一次然后通过cookie来进行登录。 测试网页为麦子学校的登录页面...
  • xuejinliang
  • xuejinliang
  • 2017年03月29日 15:13
  • 1000

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

之前没有怎么用过python,也没写过爬虫,最近几天抽空学习了一下,写了个人人网的爬虫练了练手。     用了BeautifulSoup4包来解析HTML标签,Beautiful Soup 是用 P...
  • u014237185
  • u014237185
  • 2014年12月01日 19:33
  • 3620

Python爬虫小实践:使用BeautifulSoup+Request爬取CSDN博客的个人基本信息

好久都没有动Python了,自从在网上买了《Python网络数据采集》这本书之后一直没有时间写自己的小的Demo,今天再网络上无意中看见 http://www.cnblogs.com/mfryf/p/...
  • HW140701
  • HW140701
  • 2017年02月13日 14:29
  • 1993

三.获取登陆cookie,并且利用cookie访问登陆后的界面

一.urllib2方法 #coding:utf-8 import cookielib import urllib2 import urllib import requests url='http...
  • beyond_f
  • beyond_f
  • 2017年07月03日 13:45
  • 600

使用requests+beautifulsoup爬取你想要的数据

在当今大数据时代,数据是比较值钱的东西。很多数据是你拿不到的,要靠自己收集。有一种方法叫爬虫。就是通过爬取网页内容,获得想要的数据。 我们爬取数据能干什么。这就看你的需求。比如有人可以爬网站,下载资源...
  • passionboyxie
  • passionboyxie
  • 2018年01月05日 23:05
  • 127
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个简单的不用cookie的人人网状态爬取的python爬虫,使用beautifulsoup
举报原因:
原因补充:

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