Python爬虫(小练习)
近日,在浏览伯乐在线(http://blog.jobbole.com/29281/)的时候碰到一些很不错的资源:25本免费的Python电子书
如下图:
其中,每本都是以名字+超链接的方式,于是激起了我写个小程序保存这些资源的欲望,顺便也能练习一些不太熟练的小爬虫 : ) 。 好了,我们开始吧!
先展示一下成果给大家看嗯: 如图
每本书都很有条理的保存在本地文档中,结果还是挺满意的哈。
首先呢 要完成这些工作大概要分为一下几个步骤:
1. 获得整个页面的源代码 (网页源码HTML)
2. 获得目标区域的源代码 (缩小范围)
3. 在小范围内匹配资源的URL
4. 将匹配到的资源URL写入到本地保存
下面,将分为4个步骤来分部展示Python程序
第一,获得整个页面的源代码:
def getHtml(url):
html = urllib.urlopen(url)
sorce = html.read()
return sorce
该段代码将返回资源所在的整个页面的HTML源代码
第二,获得目标区域的源代码 (缩小范围):
def getRange(content):
start0 = content.find(r'<div class="entry">')
start = content.find(r'<ol>',start0)
end = content.find(r'<div id="ad1">',start)
content2 = content[start:end]
return content2
第三,匹配资源的URL:
def getLink(content2):
reg = re.compile(r'<a href="(.*?[.html|.pdf]?)" target=')
result = reg.findall(content2)
return result def getName(content2):
reg = re.compile(r'<a href=".*?[.html|.pdf]?" target="_blank">(.*?)</a>')
result2 = reg.findall(content2)
return result2
以上俩个函数分别用来匹配资源的 链接 和 书名
第四,保存到本体:
即是在print 的基础上从定向到文件中。详见下面的完整代码 : )
下面是完整代码:
#!/usr/bin/env python
#coding:utf-8 import urllib
import re def getHtml(url):
html = urllib.urlopen(url)
sorce = html.read()
return sorce def getRange(content):
start0 = content.find(r'<div class="entry">')
start = content.find(r'<ol>',start0)
end = content.find(r'<div id="ad1">',start)
content2 = content[start:end]
return content2 def getLink(content2):
reg = re.compile(r'<a href="(.*?[.html|.pdf]?)" target=')
result = reg.findall(content2)
return result def getName(content2):
reg = re.compile(r'<a href=".*?[.html|.pdf]?" target="_blank">(.*?)</a>')
result2 = reg.findall(content2)
return result2 if __name__ == '__main__':
content = getHtml(r'http://blog.jobbole.com/29281/')
content2 = getRange(content)
link = getLink(content2)
name = getName(content2)
i = 1
f = open('content.txt','w+')
for x, y in zip(name, link):
print >>f, str(i),": ",x,
print >>f
print >>f,y
i = i + 1
看到这里您辛苦了,谢谢 : )
—————————————————————————————————————————————————————————————————————————————
声明:
本文为 大Yi巴狼 对自己所学的知识整理和实现。
本文档欢迎自由转载,但请务必保持本文档完整或注明来之本文档。本文档未经 大Yi巴狼 同意,不得用于商业用途。最后,如果您能从这个简单文档里获得些许帮助,大Yi巴狼 将对自己的一点努力感到非常高兴;由于作者本人水平有限,如果本文档中包含的错误给您造成了不便,在此提前说声抱歉。
祝身体健康,工作顺利。
Python爬虫(小练习)的更多相关文章
- 一个python爬虫小程序
起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...
- 适合新手的Python爬虫小程序
介绍:此程序是使用python做的一个爬虫小程序 爬取了python百度百科中的部分内容,因为这个demo是根据网站中的静态结构爬取的,所以如果百度百科词条的html结构发生变化 需要修改部分内容. ...
- python爬虫小实例
1.python爬取贴吧壁纸 1.1.获取整个页面数据 #coding=utf-8 import urllib def getHtml(url): page = urllib.urlopen(url) ...
- 找python爬虫小项目?github给你准备好了!
前言 即使我们都是程序员,但我们也并非都会修电脑,都会做酷炫的ppt,都会优化系统卡顿.其实程序员也是分行业.分专业的,就像医生也分内外科.呼吸科.神经科神的. 作为非专业的python选手,或者非专 ...
- Python爬虫小实践:爬取任意CSDN博客所有文章的文字内容(或可改写为保存其他的元素),间接增加博客访问量
Python并不是我的主业,当初学Python主要是为了学爬虫,以为自己觉得能够从网上爬东西是一件非常神奇又是一件非常有用的事情,因为我们可以获取一些方面的数据或者其他的东西,反正各有用处. 这两天闲 ...
- Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库
前两天有人私信我,让我爬这个网站,http://bbs.baobeihuijia.com/forum-191-1.html上的失踪儿童信息,准备根据失踪儿童的失踪时的地理位置来更好的寻找失踪儿童,这种 ...
- 4.Python爬虫小案例
1.网络爬虫定义:按照一定的规则,自动的抓取网站信息的程序或者脚本. 2.流程:request打开url得到html文档==浏览器打开源码分析元素节点==通过BeautifulSoup得到想要的数据= ...
- python 爬虫小案例
爬取百度贴吧帖子信息 #!/usr/bin/env python # -*- coding: utf-8 -*- # author: imcati import requests,re,time cl ...
- python爬虫小项目实战
- GitHub 上有哪些优秀的 Python 爬虫项目?
目录 GitHub 上有哪些优秀的 Python 爬虫项目? 大型爬虫项目: 实用型爬虫项目: 其它有趣的Python爬虫小项目: GitHub 上有哪些优秀的 Python 爬虫项目? 大型爬虫项目 ...
随机推荐
- 《RESTful Web Services》第二章 识别资源
引言:开放RESTful Web服务的首要步骤之一是设计资源模型. 2.1 如何从领域名词中识别资源 2.2 如何选择资源粒度 一些因素会影响数据库表和对象模型的设计,例如领域建模.需要高 ...
- nopCommerce的源代码结构和架构
下载地址 nopcommerce的源代码很容易拿到,它是开源的,所以你可以直接到网上下载.下载地址:http://www.nopcommerce.com/downloads.aspx 因为nop是国外 ...
- 对于 NSLayoutConstraint 不执行动画的处理:
在开发中 我们有时候需要改变某个空间的约束条件 也就是更改NSLayoutConstraint的值 (比如说我想在键盘顶部增加一个工具栏 让工具栏随着键盘的位置变化而变化 有一个动画效果)但是发 ...
- Tomcat启动报错 Failed to start component [StandardServer[8005]]解决
SEVERE: The required Server component failed to start so Tomcat is unable to start. org.apache.catal ...
- 用Windows Server 2003搭建企业内部邮件服务器
公司要搭建一个邮件服务器,方便内部邮件的发送.而且要求每位员工都可以使用自己的账号和密码.领导将这份工作交给我,不过,这可难不倒我.只要借助Windows Server 2003就可以轻松建起内部邮件 ...
- Linux Shell产生16进制随机数
n为字符长度 openssl rand -hex n
- 使用AndroidScreenSlidePager开源库
一.下载地址 https://github.com/LyndonChin/AndroidScreenSlidePager 点击右侧的Download ZIp按钮进行下载.然后解压缩到本地. 二.使用方 ...
- GestureDetector类及其用法
转载子:http://www.cnblogs.com/rayray/p/3422734.html 项目中有需求:针对一个imageview,点击需要查看大图,左右滑动能执行翻页. 自己对手势这一块并不 ...
- VS打包
同学让帮忙打包个VC的程序,程序比较简单,是带access数据库的统计查询软件,之前用Visual Studio 6.0自带的Package & Deployment Wizard 工具打包过 ...
- ASP.NET MVC模型绑定的6个建议(转载)
ASP.NET MVC模型绑定的6个建议 发表于2011-08-03 10:25| 来源博客园| 31 条评论| 作者冠军 validationasp.netmvc.netasp 摘要:ASP.NET ...