这是一篇Python爬取CSDN下载资源信息的例子,主要是通过urllib2获取CSND某个人所有资源的资源URL、资源名称、分数等信息;写这篇文章的原因是我想获取自已的资源所有的评论信息,但是由于评论采用JS临时加载,所以这篇文章先简单介绍如何人工分析HTML页面爬取信息。
import urllib
import time
import re
import os
import sys
reload(sys)
sys.setdefaultencoding('gbk')
#**************************************************
#第一步 遍历获取每页对应主题的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
#获取具体URL
url_list = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')", obj)
for url in url_list:
url_load='http://download.csdn.net'+url
print 'URL: '+url_load
fileurl.write('URL: http://download.csdn.net'+url+'\n')
#获取资源标题
#<a href="/detail/eastmount/8757243">MFC显示BMP图片</a>
res_title = r'<a href=.*?>(.*?)</a>'