主程序:
from util import *
import re,urllib,urllib2dou=douban()
username='xxxxxxxx'
password='xxxxxxx'
domain='http://www.douban.com/'
origURL='http://www.douban.com/login'
dou.setinfo(username,password,domain,origURL)
dou.signin()
page=dou.opener.open('http://www.douban.com/contacts/list')
directions=re.findall(r'\s*href\s*=\s*"http://www.douban.com/people/([^/]*)',page.read())
dir={}
dir_book={}
i=0
for direction in directions:dir[direction]=0
num=len(dir)
i=0
for nam, nothing in dir.items():name="http://book.douban.com/list/"+nam+"/collect"print name#i=i+1print "books of",nam,":"page=dou.opener.open(name)while True:p=page.read()books=re.findall(r'href="http://book.douban.com/subject/.*/">\s*([^<]*)',p)for book in books:print bookif book in dir_book:dir_book[book]=dir_book[book]+1else:dir_book[book]=1ds=re.search(r'</a><span class="next"><a[\n\s]*href="(http://[^"]*)">',p)      if ds == None:breakpage=dou.opener.open(ds.group(1))     for book_name,times in sortDic(dir_book):print book_name+": "+str(times)
print len(dir_book) 
util.py :
import re,urllib,cookielib,urllib2
import socket
socket.setdefaulttimeout(5)
def sortDic(Dict):return sorted(Dict.items(),key=lambda e:e[1])class crawl:def __init__(self,ini):self.pages=[]self.pages.append(ini)self.add=Truedef PageParser(self,page):print pagedirections=re.findall(r'\s*href\s*=\s*"(https?://[^"^\s^\(^\)]*)',page)
#only add new pages when less then 100 pages        if len(self.pages)>10:self.add=Falseif self.add==True:    for direccion in directions:if not direccion.endswith(".js") and not direccion.endswith(".css") and not direccion.endswith(".exe") \and not direccion.endswith(".pdf"):self.pages.append(direccion)print self.pagesdef PageLoad(self,dir):print dirpage=urllib.urlopen(dir)self.PageParser(page.read())def crawl_pages(self):while len(self.pages)!=0:self.PageLoad(self.pages.pop(0))class douban(object):def __init__(self):  self.app = ''  self.signed_in = False  self.cj = cookielib.LWPCookieJar()  try:  self.cj.revert('douban.coockie')  except:  None  self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))  urllib2.install_opener(self.opener)  def setinfo(self,username,password,domain,origURL):self.name=usernameself.pwd=passwordself.domain=domainself.origURL=origURLdef signin(self):  i=0params = {'form_email':self.name, 'form_password':self.pwd, 'remember':1}  req = urllib2.Request(  'http://www.douban.com/login',  urllib.urlencode(params)  )  r = self.opener.open(req)if r.geturl() == 'http://www.douban.com/':  print 'Logged on successfully!'  self.cj.save('douban.coockie')  self.signed_in = Truepage=urllib.urlopen("http://www.douban.com")print page.read()return 0return 1

先模拟loging豆瓣,保存cookie,然后用根据豆瓣网页特性,读取好友列表,从每个好友里的收藏里,读取所读书籍的名字,把书名储存在字典中避免重复。输出按value排序字典。



转载于:https://www.cnblogs.com/rabby/archive/2010/07/18/1780260.html

python 爬虫 ,抓取所有豆瓣好友读的书,列出读过最多的书。(模拟loging豆瓣)...相关推荐

  1. 编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法

    这篇文章主要介绍了编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法,用到了Python的urllib和urllib2模块,需要的朋友可以参考下 抓取豆瓣电影TOP100 一.分析豆瓣top ...

  2. python爬虫app步骤_Python爬虫抓取手机APP的传输数据,python爬虫抓取app

    Python爬虫抓取手机APP的传输数据,python爬虫抓取app 大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1. ...

  3. 如何使用Python爬虫抓取数据?

    Python爬虫应用十分广泛,无论是各类搜索引擎,还是日常数据采集,都需要爬虫的参与.其实爬虫的基本原理很简单,今天小编就教大家如何使用Python爬虫抓取数据,感兴趣的小伙伴赶紧看下去吧! 工具安装 ...

  4. python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...

    python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07

  5. python爬虫招聘-Python爬虫抓取智联招聘(基础版)

    原标题:Python爬虫抓取智联招聘(基础版) 作者:C与Python实战 「若你有原创文章想与大家分享,欢迎投稿.」 对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪 ...

  6. Python学习教程:Python爬虫抓取技术的门道

    Python学习教程:Python爬虫抓取技术的门道 web是一个开放的平台,这也奠定了web从90年代初诞生直至今日将近30年来蓬勃的发展.然而,正所谓成也萧何败也萧何,开放的特性.搜索引擎以及简单 ...

  7. 如何用python爬股票数据_python爬虫股票数据,如何用python 爬虫抓取金融数据

    Q1:如何用python 爬虫抓取金融数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为 ...

  8. Python爬虫抓取某音乐网站MP3(下载歌曲、存入Sqlite)

    Python爬虫抓取某音乐网站MP3(下载歌曲.存入Sqlite) 最近右胳膊受伤,打了石膏在家休息.为了实现之前的想法,就用左手打字.写代码,查资料完成了这个资源小爬虫.网页爬虫, 最主要的是协议分 ...

  9. Python爬虫抓取考试试题

    Python爬虫抓取考试试题 今天做了个小玩意,但觉得挺有意思的,分享给大家.主要是这样的,因为帮妹子寻找考试资料,发现同一本书不同的章节分别在不同的链接中,复制起来实在要命,所以就在想能不能用爬虫实 ...

  10. Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转)

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

最新文章

  1. 《Spring揭秘》——IOC梳理2(容器启动,bean生命周期)
  2. Loj #6077. 「2017 山东一轮集训 Day7」逆序对
  3. JLBH示例1 –为什么应在上下文中对代码进行基准测试
  4. ASP.NET Atlas简单控件介绍——Sys.Component基类与Sys.UI.Control基类
  5. less、Element-UI等安装配置
  6. 虚拟化顶级技术会议KVM Forum演讲分享 | 移动云KVM共享云盘技术实践
  7. 闪退没由报错_使命召唤:(cod16)出现的闪退问题以及解决办法
  8. 【ArcGIS|空间分析|网络分析】2 创建多模式网络数据集
  9. 美国国家安全局硬盘固件入侵技术揭秘
  10. 海康录像机识别不到硬盘_海康硬盘录像机提示“资源不足”如何解决?
  11. 感知机为什么不能表示“异或”?
  12. 30岁以前该做什么,30岁以后该做什么!!很有道理
  13. mysql ssd 应用_MySQL Disk--SSD 特性
  14. mysql char存汉子_char如何存储汉字
  15. Android屏幕适配全攻略3-和产品经理聊聊
  16. win10cmd命令手册
  17. group by 和where可以一起使用吗
  18. 解决hive 中 beeline无法连接问题
  19. Linux 音频驱动(四) ASoC音频驱动之Machine驱动
  20. python SM2明文密码加解密

热门文章

  1. 【不断更新】2018杭州云栖大会!视频美图赏析
  2. 在 Swift 中调用 OC 代码
  3. 妹纸这套路玩的好深,吹泡泡能吹出气球来
  4. 惠普发布软件定义存储 助力提升虚拟化能力
  5. eclips 的pydev的debug
  6. java中处理字符编码(网页与数据库)(转)
  7. 数据库的优化tips
  8. linux ifconfig命令配置ip地址
  9. oracle 字符串转为正数用 to_number()……
  10. [导入]用Ext做的登陆窗口的例子