利用爬虫把徐小明新浪博客里的所有博文链接爬下来,保存到脚本所在路径的csv文件中(python2.7代码)

把起始博文目录链接换成其他的也是完全可以的

详细内容请关注微信公众号:岛城窝窝,

代码如下

#! /usr/bin/env python
#coding=utf-8
# by huangle63
'''
此代码功能为把徐小明新浪博客的所有博文链接下载保存到本地csv文件中
运行本程序,会在脚本所在路径生成一个 xuxiaoming_blog_catalog.csv 文件
20150419 huangle63
'''
import sys
import re
import csv
import urllib2
from bs4 import BeautifulSoup#获取页面代码,返回对象是 BeautifulSoup 格式
def get_http_content(url):try:user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'headers = { 'User-Agent' : user_agent }html = urllib2.Request(url, headers = headers)myResponse = urllib2.urlopen(html)myPage = myResponse.read()bsObj = BeautifulSoup(myPage,'html5lib')return bsObjexcept urllib2.URLError as e:return None#每个页面链接里有n个博文目录链接
def spider_catalog(spider_href):no_spider_hrefs.remove(spider_href)#获取当前页面链接里的博文目录链接url_content = get_http_content(spider_href)if url_content == None:print('ERROR1: Page could not be found')else:#获取页面目录信息,格式:日期    标题名   链接#把获取的信息保存到csv文件中csvFile = open(sys.path[0] + r'\xuxiaoming_blog_catalog.csv','ab')try:for link in url_content.findAll('div',{'class':'articleCell SG_j_linedot1'}):link_title = link.find('a', href = re.compile("^(http://blog.sina.com.cn/s)")).get_text().replace(u'\u200b','').replace(u'\xa0','')link_href = link.find('a', href = re.compile("^(http://blog.sina.com.cn/s)")).attrs['href']link_date = link.find('span',{'class':'atc_tm SG_txtc'}).get_text()print(link_date + '   ' + link_title + '    ' + link_href)writer = csv.writer(csvFile)writer.writerow((link_date,link_title.encode("gbk"),link_href))except AttributeError as e:#当调用BeautifulSoup对象不存在时,会返回一个NONE对象,如果再调用这个NONE对象下面的子标签,就会发生AttributeError错误print('ERROR2: BeautifulSoup get the none tag')finally:csvFile.close()#获取当前页面里的其它页面链接(第一页,第二页......)try:for link in url_content.find('ul',{'class':'SG_pages'}).findAll('li'):all_li = link.find('a',href = re.compile("^(http://blog.sina.com.cn/s)"))if all_li != None:link_page_href = all_li.attrs['href']if link_page_href not in page_hrefs:page_hrefs.add(link_page_href)no_spider_hrefs.add(link_page_href)link_page_title = all_li.get_text().replace(u'\u200b','').replace(u'\xa0','')print(link_page_title + '    ' + link_page_href)spider_catalog(link_page_href)  #递归查询所有页面链接except AttributeError as e:#当调用BeautifulSoup对象不存在时,会返回一个NONE对象,如果再调用这个NONE对象下面的子标签,就会发生AttributeError错误print('ERROR2: BeautifulSoup get the none tag')except Exception as e:print('ERROR3: ',e)page_hrefs = set() #pages_href用于去重,把所有链接都存储在pages_hrefs
no_spider_hrefs = set() #用于存储还没有爬虫的页面链接
start_page_html = 'http://blog.sina.com.cn/s/articlelist_1300871220_0_1.html' #起始博文的网页链接
page_hrefs.add(start_page_html)
no_spider_hrefs.add(start_page_html)
spider_catalog(start_page_html)

下载徐小明新浪博客全部博文链接相关推荐

  1. 新浪博客发博文老是提示系统繁忙、请稍后再试解决方法

    新浪博客发博文 老是提示系统繁忙.请稍后再试解决方法: 微信关注 新浪客服 公众号 点击在线客服.选人工,博客其他问题  然后客服会让你提供博客登陆名 密码前三位 博客绑定的手机  联系邮箱 手机会受 ...

  2. 新浪博客发表博文不同步到新浪微博

    进入个人中心-->设置-->账号绑定-->取消绑定新浪微博

  3. 新浪博客“网络繁忙请稍后再试”

    发博文提示网络繁忙请稍后再试 August 17 摘要:经常用新浪博客发博文的人应该会遇到一个问题,那就是有时会提示网络繁忙请稍后再试,同时连保存草稿也不行,这时候该怎么办呢? 方法/步骤 我们假定真 ...

  4. android博客排行榜,新浪博文排行_新浪博客 新浪博客Android客户端

    新浪博客 新浪博客Android客户端 JPG,330x294,231KB,281_250 醉 是春花烂漫时 JPG,480x800,191KB,250_417 新浪博客 JPG,472x216,23 ...

  5. 新浪博客关闭了吗,不能写博文了,提示:系统繁忙,请稍后再试

    新浪博客关闭了吗,不能写博文了,提示:系统繁忙,请稍后再试. 不知道你们大家有没有一直是这样,我从去年开始发现就一直是这样的,最近几天基本上每天分不同的时间段去测试,还是发不了文. 不信你们看看我的博 ...

  6. 新浪博客的视频如何下载

    新浪博客的视频如何下载 将新浪视频的播放网址年贴下面网址中的搜索栏,点击开始就能看到视频下载地址了.. http://www.flvcd.com/

  7. [转载]Word直接发布新浪博客(以Word 2013为例)

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:Word直接发布新浪博客(以Word 2013为例) 作者:paulke2011 注意:这篇博客直接由Word 20 ...

  8. 名风新浪博客评论软件-自动评论推广

    简介:全自动新浪博文评论 新浪博客全自动评论软件介绍: 名风新浪博客评论软件具有定时搜索博文,快速账号登录.自动验证码识别.多账号自动切换.博文循环评论.评论内容自定义变量.并且支持代理ip,宽带拨号 ...

  9. 所立得新浪博客群发助手V1.3特别版

    <所立得新浪博客群发助手V1.3特别版>及其注册补丁吾有啊-草根站长资源站提供免费下载,使用无任何限制.如果你还没有博客群发推广工具,WuYouA.CoM<所立得新浪博客群发助手V1 ...

  10. 手把手教你做一个新浪博客发布软件JAVA版本(5)--打开博客发布页面并解析博客内容

            前言:很多人用新浪博客引流,但是以前可以用api发布,但是现在已经行不通了,市面上也有诸如新浪博客批量发布软件啦,新浪博客批量发帖啦,新浪博客发布软件啊等等的各种工具,但是小心中枪,一 ...

最新文章

  1. 怎样Selenium IDE选择combo box中值
  2. 一致性问题和Raft一致性算法——一致性问题是无法彻底解决的,可以说一个分布式系统可靠性达到99.99…%,但不能说它达到了100%...
  3. C# 3.X -- the newest features
  4. 第三章 可扩展标记语言XML
  5. SpriteBuilder中不能编辑自定义类或不能给节点添加属性的解决
  6. Configured broker.id 2 doesn‘t match stored broker.id 3 in meta.properties
  7. JSF 2.2: HTML5 Support
  8. java hs err pid_JAVA 奔溃 生成hs_err_pid****的文件,求大神看看
  9. http参数修改以及拦截
  10. apicloud 微信授权在AppLoader中 包名不一致
  11. 手机直播系统,仿映客直播程序项目需求
  12. Linux利用终端执行命令,linux – 通过/ dev / pts在另一个终端中执行命令
  13. 时代正燃 | 全民健身运动意图大数据报告
  14. 计算机滴滴响重启,电脑发出滴滴声是什么原因(常见的4个故障和解决方法)...
  15. 计算机为啥系统保护设置不了,我的电脑为什么设置了屏幕保护程序而不起作用 – 手机爱问...
  16. vue/react/web前端项目部署到阿里云服务器_nginx_pm2流程及部署前的准备
  17. datastage Transformation函数之INDEX
  18. 114搜索引擎跃居网络“十大流氓软件”之首
  19. 麒麟960鸿蒙,麒麟710和麒麟960对比
  20. 取带runas的一些优秀小工具介绍

热门文章

  1. 记录贴,使用PDFviewer时遇到的导入问题
  2. JAVA处理字符串压缩以及文件压缩
  3. java 获取视频时长
  4. SCI/SSCI选刊神器之——Jane
  5. 查看安卓app包名的5种方法
  6. 幻想西游php源码,如何搭建幻想西游服务器
  7. 蓝桥杯题目练习 水题 [蓝桥杯2019初赛]质数
  8. 模糊规则优化matlab,遗传算法优化模糊pid控制规则
  9. Google Chrome浏览器离线安装包下载方法
  10. 系统制作与优化2007最终版