python网络爬虫入门(一)——简单的博客爬虫

最近,为了微信公众号的图文,上网疯狂的收集和看了一些有深度的新闻和有趣的引人深思的文字评论,并选择了几篇极品发布出去。但感觉一篇一篇的看实在是麻烦死了。想找一个简单的解决办法,看能不能自动把网上的资料收集起来,然后自己用统一筛选。不巧,最近准备学习下网络爬虫相关知识,于是按照网上的教程自己学着试写了一个小小的爬虫,嘻嘻,是用来爬韩寒博客的。


先把完整的代码贴上来,如果朋友们需要试验下,请先安装python相关环境,然后在复制粘贴保存,再按F5运行。

#导入urllib库,python访问网页必须库
import urllib
#时间类库
import time

#定义一个URL数组用来存放捕获的URL地址,也就是需要爬的文字地址路径
url = [''] * 50
#定义link变量,用来记录第几个URL地址
link = 1

#循环捕获博客目录第一页所有的文章链接,并下载

#定义con变量来存储urllib.urlopen打开韩寒博客的目录地址,特别注意下'+str(page)+',用来变化每一页目录地址的
con = urllib.urlopen('http://blog.sina.com.cn/s/articlelist_1191258123_0_1.html').read()
#变量title用来存储con变量中找到<a title=开头元素的位置
title = con.find(r'<a title=')
#变量href用来存储con变量中找到href='开头元素的位置
href = con.find(r'href=',title)
#变量html用来存储con变量中找到.html开头元素的位置
html = con.find(r'.html',href)
#存储第一个连接地址
url[0] = con[href + 6:html + 5]
content = urllib.urlopen(url[0]).read()
open(r'hanhan/'+url[0][-26:],'w+').write(content)
print '0 have downloaded',url[0]
#循环捕获每一篇文章的地址,并存储在URL数组中
while title != -1 and href != -1 and html != -1 and link < 50:
    #con[href + 6:html + 5]是用来取con字符串href后6位到html倒数5位之间的字符串
    url[link] = con[href + 6:html + 5]
    #打开读取每一篇文章地址,并存储在content中
    content = urllib.urlopen(url[link]).read()
    #打开hanhan这个文件夹,如果里面没有url[link][-26:]这个字符串命名的文件,便将content里的内容写入,命名为url[link][-26:]
    open(r'hanhan/'+url[link][-26:],'w+').write(content)
    print link,'have downloaded',url[link]
    title = con.find(r'<a title=',html)
    href = con.find(r'href=',title)
    html = con.find(r'.html',href)
    #自增记数
    link = link +1

这个爬虫实现的功能还是很简陋的,但作为入门我觉得还是够的。它只是实现了保存博客第一页目录所有文章的HTML文件,并没有抓取特定的内容予以保存。


还有我觉得有编程基础的人,看起来应该不是很费力,基本的思想很简单,就是先爬地址,然后爬一个地址就下地址对应的网页,接着保存为。我个人觉得,这段代码还是有点邋遢,不够简洁明了。希望通过以后的学习能写出质量更高的代码。

里面涉及到的一些方法通过查找python文档都能找到,也不难,里面每一个语句我几乎都标有备注。

运行:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值