下载徐小明新浪博客全部博文链接
来源:互联网 发布:优乐视高清网络播放器 编辑:程序博客网 时间:2024/04/28 17:52
利用爬虫把徐小明新浪博客里的所有博文链接爬下来,保存到脚本所在路径的csv文件中(python2.7代码)
把起始博文目录链接换成其他的也是完全可以的
详细内容请关注微信公众号:岛城窝窝,
代码如下
#! /usr/bin/env python#coding=utf-8# by huangle63'''此代码功能为把徐小明新浪博客的所有博文链接下载保存到本地csv文件中运行本程序,会在脚本所在路径生成一个 xuxiaoming_blog_catalog.csv 文件20150419 huangle63'''import sysimport reimport csvimport urllib2from 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 bsObj except 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_hrefsno_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)
0 0
- 下载徐小明新浪博客全部博文链接
- Python爬取韩寒全部新浪博客
- 链接之前新浪博客
- 一次性下载全部链接!!!!!
- 新浪博客发表博文不同步到新浪微博
- CSDN博客发文,尝试新浪微薄链接
- 读新浪博客示例[源代码下载]
- 新浪博客HtmlEditor说明、在线演示、下载
- 自己写的新浪博客下载器~~
- LightBus新浪微博客户端开源下载
- LightBus新浪微博客户端开源下载
- 新浪博客的视频如何下载
- 博客内部各种下载链接
- 新浪微博邀请链接
- 快速无需脚本直接用迅雷下载页面全部链接
- 新浪博客
- 新浪博客
- 新浪博客
- LeetCode 26, 80, 81, 82, . Remove Duplicates from Sorted Array/ List i, ii
- 3款搜索引擎试用
- HDU 1885 Key Task (状态压缩+BFS)
- [Java语言] Java Socket多线程编程示例
- ABAP数据定义和类型
- 下载徐小明新浪博客全部博文链接
- zoj--3935--2016(暴力模拟)(数学)
- [Java语言] Java执行外部程序并返回结果
- 最长公共子序列
- LocalSessionFactoryBean说明
- 从零开始——Android 4.0 实现recovery模式,出厂设置功能
- yii2 高级版安装快速版
- HashTable与多条件筛选
- ThinkPHP3.2.3使用分页