这是一篇Python爬取CSDN下载资源信息的例子,主要是通过urllib2获取CSDN某个人所有资源的资源URL、资源名称、下载次数、分数等信息;写这篇文章的原因是我想获取自己的资源所有的评论信息,但是由于评论采用JS临时加载,所以这篇文章先简单介绍如何人工分析HTML页面爬取信息。

源代码

# coding=utf-8
import urllib
import time
import re
import os#**************************************************
#第一步 遍历获取每页对应主题的URL
#http://download.csdn.net/user/eastmount/uploads/1
#http://download.csdn.net/user/eastmount/uploads/8
#**************************************************num=1 #记录资源总数 共46个资源
number=1 #记录列表总数1-8
fileurl=open('csdn_url.txt','w+')
fileurl.write('****************获取资源URL*************\n\n')while number<9:url='http://download.csdn.net/user/eastmount/uploads/' + str(number)fileurl.write('下载列表URL:'+url+'\n\n')print unicode('下载列表URL:'+url,'utf-8')content=urllib.urlopen(url).read()open('csdn.html','w+').write(content)#获取包含URL块内容 匹配需要计算</div>个数start=content.find(r'<div class="list-container mb-bg">')  end=content.find(r'<div class="page_nav">')cutcontent=content[start:end]#print cutcontent#获取块内容中URL#形如<dt><div><img 图标></div><h3><a href>标题</a></h3></dt>res_dt = r'<dt>(.*?)</dt>'  m_dt =  re.findall(res_dt,cutcontent,re.S|re.M)  for obj in m_dt:#记录URL数量print '******************************************'print '第'+str(num)+'个资源'fileurl.write('******************************************\n')fileurl.write('第'+str(num)+'个资源\n')num = num +1#获取具体URLurl_list = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')", obj)for url in url_list:url_load='http://download.csdn.net'+urlprint 'URL: '+url_loadfileurl.write('URL: http://download.csdn.net'+url+'\n')#获取资源标题#<a href="/detail/eastmount/8757243">MFC显示BMP图片</a>res_title = r'<a href=.*?>(.*?)</a>'title = re.findall(res_title,obj,re.S|re.M)for t in title:print unicode('Title: ' + t,'utf-8')  fileurl.write('Title: ' + t +'\n')#************************************************** #第二步 遍历具体资源的内容及评论 #http://download.csdn.net/detail/eastmount/8785591#**************************************************#定位指定结构化信息盒Infoboxresources = urllib.urlopen(url_load).read()open('resource.html','w+').write(resources)start_res=resources.find(r'<div class="wraper-info">')  end_res=resources.find(r'<div class="enter-link">')infobox=resources[start_res:end_res]#获取资源积分、下载次数、资源类型、资源大小(前4个<span></span>)res_span = r'<span>(.*?)</span>'  m_span = re.findall(res_span,infobox,re.S|re.M)print '资源积分: '+m_span[0]fileurl.write('资源积分: ' + m_span[0] +'\n')print '下载次数: '+m_span[1]fileurl.write('下载次数: ' + m_span[1] +'\n')print '资源类型: '+m_span[2]fileurl.write('资源类型: ' + m_span[2] +'\n')print '资源大小: '+m_span[3]fileurl.write('资源大小: ' + m_span[3] +'\n')#**************************************************#第三步 如何获取评论#http://jeanphix.me/Ghost.py/#http://segmentfault.com/q/1010000000143340#http://casperjs.org/#**************************************************else:fileurl.write('******************************************\n\n')print '******************************************\n'print 'Load Next List\n'number = number+1 #列表加1
#退出所有循环
else:fileurl.close()

显示结果
        显示内容包括资源URL、资源标题、资源积分、下载次数、资源类型和资源大小:

        比如现在爬取郭霖大神的资源信息,其中页面链接如下:(共7页)
              http://download.csdn.net/user/sinyu890807/uploads/1
              http://download.csdn.net/user/sinyu890807/uploads/7
        简单修改Python源代码URL后,下载页面如下图所示:

        运行结果如下图所示:

HTML分析
        首先,获取每列中的所有资源的URL和标题,通过分析源代码。

<dt><div class="icon"><img src="/images/minetype/rar.gif" title="rar文件"></div><div class="btns"></div>  <h3><a href="/detail/eastmount/8772951">MFC 图像处理之几何运算 图像平移旋转缩放镜像(源码)</a><span class="points">0</span></h3>
</dt>
<dd class="meta">上传者:<a class="user_name" href="/user/eastmount">eastmount</a>| 上传时间:2015-06-04| 下载26次
</dd>
<dd class="intro">该资源主要参考我的博客【数字图像处理】六.MFC空间几何变换之图像平移、镜像、旋转缩放详解,主要讲述基于VC++6.0 MFC图像处理的应用知识,要通过MFC单文档视图实现显示BMP图片。
</dd>
<dd class="tag"><a href="/tag/MFC">MFC</a><a href="/tag/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86">图像处理</a><
</dd>

对应的HTML显示如下图所示:


        然后通过URL去到具体的资源获取我自己称为像消息盒的信息:

        对应审查元素的信息如下所示,获取<span>0分</span>即可:

        最后我想做的事获取评论信息,但是它是通过JS实现的:

<div class="section-list panel panel-default"><div class="panel-heading"><h3 class="panel-title">资源评论</h3></div><!-- recommand --><script language='JavaScript' defer type='text/javascript'         src='/js/comment.js'></script><div class="recommand download_comment panel-body" sourceid="8772951"></div>
</div>

显示的JS页面部分如下:

var base_url= (window.location.host.substring(0,5)=='local') ? 'http://local.downloadv3.csdn.net' : 'http://download.csdn.net';
base_url = "";
$(document).ready(function(){CC_Comment.initConfig();CC_Comment.getContent(1);
});
var CC_Comment =
{sourceid:0,initConfig:function(){var sid = parseInt($(".download_comment").attr('sourceid'));if(isNaN(sid) || sid<=0){this.sourceid = 0;}else{this.sourceid = sid;}}
....
}

最后希望文章对你有所帮助吧!下一篇准备分析下Python如何获取JS的评论信息,同时该篇文章可以给你提供一种简单的人工分析页面的例子;也可以获取某个人CSDN资源下载多、分数高的给你挑选。基础知识,仅供参考~
      (By:Eastmount 2015-7-21 下午5点   http://blog.csdn.net/eastmount/)

[Python学习] 简单爬取CSDN下载资源信息相关推荐

  1. 简单爬取CSDN下载资源信息

    这是一篇Python爬取CSDN下载资源信息的例子,主要是通过urllib2获取CSND某个人所有资源的资源URL.资源名称.分数等信息:写这篇文章的原因是我想获取自已的资源所有的评论信息,但是由于评 ...

  2. [python学习] 简单爬取维基百科程序语言消息盒

    文章主要讲述如何通过Python爬取维基百科的消息盒(Infobox),主要是通过正则表达式和urllib实现:后面的文章可能会讲述通过BeautifulSoup实现爬取网页知识.由于这方面的文章还是 ...

  3. 003.[python学习] 简单抓取豆瓣网电影信息程序

    003.[python学习] 简单抓取豆瓣网电影信息程序 声明:本程序仅用于学习爬网页数据,不可用于其它用途. 本程序仍有很多不足之处,请读者不吝赐教. 依赖:本程序依赖BeautifulSoup4和 ...

  4. python爬虫下载小说_用PYTHON爬虫简单爬取网络小说

    用PYTHON爬虫简单爬取网络小说. 这里是17K小说网上,随便找了一本小说,名字是<千万大奖>. 里面主要是三个函数: 1.get_download_url() 用于获取该小说的所有章节 ...

  5. 用PYTHON爬虫简单爬取网络小说

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  6. python爬虫实现爬取网页主页信息(html代码)

    python爬虫实现爬取网页主页信息(html代码) 1.爬取网站源码 urllib整体介绍: urllib是一个包,收集几个模块来处理网址 urllib.request打开和浏览url中内容 url ...

  7. Python POST 爬虫爬取掘金用户信息

    Python POST 爬虫爬取掘金用户信息 1. 概述 Python第三方库requests提供了两种访问http网页的函数,基于GET方式的get()函数和基于POST方式的post()函数. g ...

  8. python+scrapy简单爬取淘宝商品信息

    python结合scrapy爬取淘宝商品信息 一.功能说明: 已实现功能: 通过scrapy接入selenium获取淘宝关键字搜索内容下的商品信息. 待扩展功能: 爬取商品中的全部其他商品信息. 二. ...

  9. Python学习笔记-爬取B站电视剧《风犬少年的天空》弹幕并分析

    爬取B站电视剧<风犬少年的天空>弹幕并分析 写在前面 开始! 简单分析一下弹幕数据 蠢并痛苦着的学习过程... 干(烂)货环节-------弹幕的获取与整理 关于cid的获取 关于弹幕上限 ...

最新文章

  1. System.LazyT 延迟加载
  2. 远程ubuntu虚拟机Tensorflow搭建 - 1 SSH连接
  3. buu [BJDCTF 2020]这是base??
  4. node.js热部署
  5. Shuffle'm Up——简单模拟
  6. “睡服”面试官系列第四篇之字符串的扩展(建议收藏学习)
  7. oracle应收模块核销点不上,详解EBS接口开发之应收款处理
  8. Spring Boot笔记-发送纯字符串邮件及带附件邮件
  9. 宇视科技android面试_宇视科技软件笔试面试
  10. 谁是三国跳槽王:吕布成毫无规划的跳槽者
  11. python三次方函数_python函数基础------第三次作业讲解(二)
  12. 谷歌验证码无法显示问题
  13. java使用百度翻译接口实现前后端翻译功能
  14. LM5017原理图PCB设计要点
  15. “大劈棺”与“小手段”
  16. VLDB 历年最佳论文汇总
  17. gitHub不能用密码推送了,必须要使用令牌
  18. Pandas数据分析实战1——淘宝粽子行业分析
  19. 蓝牙 linux开发板,开源双模蓝牙协议栈 - 蓝牙模组以及开发板使用介绍
  20. Unrecognized Windows Sockets error: 10106错误解决方法

热门文章

  1. 【C++】哈希详解--哈希冲突解决办法
  2. 浅谈电信运营商的大数据应用探索
  3. python实现除法
  4. 【笔记】【机器学习基础】流形学习
  5. ORM是什么,为什么用ORM
  6. Query Kmeans
  7. 哪款蓝牙耳机音质好又耐用?500左右蓝牙耳机推荐
  8. 10种图算法直观可视化解释
  9. java字符串长度_Java中String字符串的最大长度?
  10. java字符串编码和解码