下载徐小明新浪博客全部博文链接
利用爬虫把徐小明新浪博客里的所有博文链接爬下来,保存到脚本所在路径的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)
下载徐小明新浪博客全部博文链接相关推荐
- 新浪博客发博文老是提示系统繁忙、请稍后再试解决方法
新浪博客发博文 老是提示系统繁忙.请稍后再试解决方法: 微信关注 新浪客服 公众号 点击在线客服.选人工,博客其他问题 然后客服会让你提供博客登陆名 密码前三位 博客绑定的手机 联系邮箱 手机会受 ...
- 新浪博客发表博文不同步到新浪微博
进入个人中心-->设置-->账号绑定-->取消绑定新浪微博
- 新浪博客“网络繁忙请稍后再试”
发博文提示网络繁忙请稍后再试 August 17 摘要:经常用新浪博客发博文的人应该会遇到一个问题,那就是有时会提示网络繁忙请稍后再试,同时连保存草稿也不行,这时候该怎么办呢? 方法/步骤 我们假定真 ...
- android博客排行榜,新浪博文排行_新浪博客 新浪博客Android客户端
新浪博客 新浪博客Android客户端 JPG,330x294,231KB,281_250 醉 是春花烂漫时 JPG,480x800,191KB,250_417 新浪博客 JPG,472x216,23 ...
- 新浪博客关闭了吗,不能写博文了,提示:系统繁忙,请稍后再试
新浪博客关闭了吗,不能写博文了,提示:系统繁忙,请稍后再试. 不知道你们大家有没有一直是这样,我从去年开始发现就一直是这样的,最近几天基本上每天分不同的时间段去测试,还是发不了文. 不信你们看看我的博 ...
- 新浪博客的视频如何下载
新浪博客的视频如何下载 将新浪视频的播放网址年贴下面网址中的搜索栏,点击开始就能看到视频下载地址了.. http://www.flvcd.com/
- [转载]Word直接发布新浪博客(以Word 2013为例)
2019独角兽企业重金招聘Python工程师标准>>> 原文地址:Word直接发布新浪博客(以Word 2013为例) 作者:paulke2011 注意:这篇博客直接由Word 20 ...
- 名风新浪博客评论软件-自动评论推广
简介:全自动新浪博文评论 新浪博客全自动评论软件介绍: 名风新浪博客评论软件具有定时搜索博文,快速账号登录.自动验证码识别.多账号自动切换.博文循环评论.评论内容自定义变量.并且支持代理ip,宽带拨号 ...
- 所立得新浪博客群发助手V1.3特别版
<所立得新浪博客群发助手V1.3特别版>及其注册补丁吾有啊-草根站长资源站提供免费下载,使用无任何限制.如果你还没有博客群发推广工具,WuYouA.CoM<所立得新浪博客群发助手V1 ...
- 手把手教你做一个新浪博客发布软件JAVA版本(5)--打开博客发布页面并解析博客内容
前言:很多人用新浪博客引流,但是以前可以用api发布,但是现在已经行不通了,市面上也有诸如新浪博客批量发布软件啦,新浪博客批量发帖啦,新浪博客发布软件啊等等的各种工具,但是小心中枪,一 ...
最新文章
- 怎样Selenium IDE选择combo box中值
- 一致性问题和Raft一致性算法——一致性问题是无法彻底解决的,可以说一个分布式系统可靠性达到99.99…%,但不能说它达到了100%...
- C# 3.X -- the newest features
- 第三章 可扩展标记语言XML
- SpriteBuilder中不能编辑自定义类或不能给节点添加属性的解决
- Configured broker.id 2 doesn‘t match stored broker.id 3 in meta.properties
- JSF 2.2: HTML5 Support
- java hs err pid_JAVA 奔溃 生成hs_err_pid****的文件,求大神看看
- http参数修改以及拦截
- apicloud 微信授权在AppLoader中 包名不一致
- 手机直播系统,仿映客直播程序项目需求
- Linux利用终端执行命令,linux – 通过/ dev / pts在另一个终端中执行命令
- 时代正燃 | 全民健身运动意图大数据报告
- 计算机滴滴响重启,电脑发出滴滴声是什么原因(常见的4个故障和解决方法)...
- 计算机为啥系统保护设置不了,我的电脑为什么设置了屏幕保护程序而不起作用 – 手机爱问...
- vue/react/web前端项目部署到阿里云服务器_nginx_pm2流程及部署前的准备
- datastage Transformation函数之INDEX
- 114搜索引擎跃居网络“十大流氓软件”之首
- 麒麟960鸿蒙,麒麟710和麒麟960对比
- 取带runas的一些优秀小工具介绍