[Python学习] 简单爬取CSDN下载资源信息
源代码
# 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、资源标题、资源积分、下载次数、资源类型和资源大小:
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去到具体的资源获取我自己称为像消息盒的信息:
<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下载资源信息相关推荐
- 简单爬取CSDN下载资源信息
这是一篇Python爬取CSDN下载资源信息的例子,主要是通过urllib2获取CSND某个人所有资源的资源URL.资源名称.分数等信息:写这篇文章的原因是我想获取自已的资源所有的评论信息,但是由于评 ...
- [python学习] 简单爬取维基百科程序语言消息盒
文章主要讲述如何通过Python爬取维基百科的消息盒(Infobox),主要是通过正则表达式和urllib实现:后面的文章可能会讲述通过BeautifulSoup实现爬取网页知识.由于这方面的文章还是 ...
- 003.[python学习] 简单抓取豆瓣网电影信息程序
003.[python学习] 简单抓取豆瓣网电影信息程序 声明:本程序仅用于学习爬网页数据,不可用于其它用途. 本程序仍有很多不足之处,请读者不吝赐教. 依赖:本程序依赖BeautifulSoup4和 ...
- python爬虫下载小说_用PYTHON爬虫简单爬取网络小说
用PYTHON爬虫简单爬取网络小说. 这里是17K小说网上,随便找了一本小说,名字是<千万大奖>. 里面主要是三个函数: 1.get_download_url() 用于获取该小说的所有章节 ...
- 用PYTHON爬虫简单爬取网络小说
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...
- python爬虫实现爬取网页主页信息(html代码)
python爬虫实现爬取网页主页信息(html代码) 1.爬取网站源码 urllib整体介绍: urllib是一个包,收集几个模块来处理网址 urllib.request打开和浏览url中内容 url ...
- Python POST 爬虫爬取掘金用户信息
Python POST 爬虫爬取掘金用户信息 1. 概述 Python第三方库requests提供了两种访问http网页的函数,基于GET方式的get()函数和基于POST方式的post()函数. g ...
- python+scrapy简单爬取淘宝商品信息
python结合scrapy爬取淘宝商品信息 一.功能说明: 已实现功能: 通过scrapy接入selenium获取淘宝关键字搜索内容下的商品信息. 待扩展功能: 爬取商品中的全部其他商品信息. 二. ...
- Python学习笔记-爬取B站电视剧《风犬少年的天空》弹幕并分析
爬取B站电视剧<风犬少年的天空>弹幕并分析 写在前面 开始! 简单分析一下弹幕数据 蠢并痛苦着的学习过程... 干(烂)货环节-------弹幕的获取与整理 关于cid的获取 关于弹幕上限 ...
最新文章
- System.LazyT 延迟加载
- 远程ubuntu虚拟机Tensorflow搭建 - 1 SSH连接
- buu [BJDCTF 2020]这是base??
- node.js热部署
- Shuffle'm Up——简单模拟
- “睡服”面试官系列第四篇之字符串的扩展(建议收藏学习)
- oracle应收模块核销点不上,详解EBS接口开发之应收款处理
- Spring Boot笔记-发送纯字符串邮件及带附件邮件
- 宇视科技android面试_宇视科技软件笔试面试
- 谁是三国跳槽王:吕布成毫无规划的跳槽者
- python三次方函数_python函数基础------第三次作业讲解(二)
- 谷歌验证码无法显示问题
- java使用百度翻译接口实现前后端翻译功能
- LM5017原理图PCB设计要点
- “大劈棺”与“小手段”
- VLDB 历年最佳论文汇总
- gitHub不能用密码推送了,必须要使用令牌
- Pandas数据分析实战1——淘宝粽子行业分析
- 蓝牙 linux开发板,开源双模蓝牙协议栈 - 蓝牙模组以及开发板使用介绍
- Unrecognized Windows Sockets error: 10106错误解决方法