python爬取网页并作简单处理(python2.7.1) 一
来源:互联网 发布:航拍测绘软件 编辑:程序博客网 时间:2024/06/04 19:39
写在前面:最近这几天准备学习python,以前学过Android,但是因为一些原因并没有坚持下来。现在开始写博文,算是对自己的一种监督吧。记录学习,记录自己。
挫折是常有的希望你能坚强的度过。
目标
以豆瓣电影TOP250为目标,爬取目标中的中文电影名、评分、评论人数、最热评论(页面上简短的那个)。豆瓣电影TOP250网址:https://movie.douban.com/top250 。其他的网址我也试过但还是感觉这个最适合练习吧。
爬取前先应该看看网页源码,在任一电影评分处点右键查看元素,我们就能看到我们要爬取的数据在什么地方。虽然看不太懂网页代码,但是仔细研究一下还是对我们爬取有帮助的。我们需要的数据都在一个标签里,我们爬取的逻辑很简单:先把网页代码爬取下来,然后再对把这些标签里的东西拿出来就行。好了,大概就这样。
开始爬取
爬取网页代码,这里我用的是python2.7.13虽然比较古老但是人作为学习来说还是不错的,有许多博客和例子可以自学。爬取网页代码要用的函数在urllib2中,也用其他的库可以用。这个就看个人了。
#-*- coding:utf-8 -*-import urllib2import re#获得网页源码def urlPage(url): try: request = urllib2.Request(url) reponse = urllib2.urlopen(request) html = reponse.read() except urllib2.URLError,e: if hasattr(e,"code"): print e.code if hasattr(e,"reason"): print e.reason return html其实爬取一个网页下面这两行代码就够了,但是为了保持稳定性还是写个异常捕捉吧
reponse = urllib2.urlopen(“'https://movie.douban.com/top250'”)html = reponse.read()主要通过urlopen(url)和read()对网页代码进行下载和读取。read()的返回值为string类型,了解这个返回值类型对后面解析挺有帮助的。
简单预处理
简单解析就是对爬取下来的网页代码进行一个简单的预处理,因为爬取下来的源码中我们需要的只有一部分,其他的对于我们来说没啥用,留下来也会降低处理速度,所以还是处理掉的好。这里我们主要用到的是对字符串操作中的split()函数。要说明的一点是split(str)函数的返回值是一个列表。a.split(str)会在字符串a中用字符串str来分割,每一个分割的部分为列表中的一个元素。一个简单的例子来说明这一切:
#coding:utf-8a = 'tetasfafdansfasdfa'b = a.split('fa')print bprint type(b)运行结果为:
['tetas', 'fdans', 'sd', '']<type 'list'>如果不懂就可以试试,其实很多地方可以用print来看看它到底是个什么东西。好了,知道了原理我们就将它用到我们的代码中
#对获取来的代码进行预处理 去掉不必要的部分def dispose(htmlPage): html = htmlPage.split('<ol class="grid_view">') page = html[1].split('</ol>') return page[0]我们先用'<ol class="grid_view">'分割,这样我们会得到两部分,前面的是没用的。结果代码太长,就不贴了。自己每一步print一下就懂啥意思了。然后我们再用'</ol>'分割出html的前部分。所以用我们用page[0]。(多用代码试试就会懂的,其实并不难)。
然后用print就能看到预处理的结果了,这里只贴出来一个:
<li> <div class="item"> <div class="pic"> <em class="">1</em> <a href="https://movie.douban.com/subject/1292052/"> <img alt="肖申克的救赎" src="https://img3.doubanio.com/view/movie_poster_cover/ipst/public/p480747492.jpg" class=""> </a> </div> <div class="info"> <div class="hd"> <a href="https://movie.douban.com/subject/1292052/" class=""> <span class="title">肖申克的救赎</span> <span class="title"> / The Shawshank Redemption</span> <span class="other"> / 月黑高飞(港) / 刺激1995(台)</span> </a> <span class="playable">[可播放]</span> </div> <div class="bd"> <p class=""> 导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins /...<br> 1994 / 美国 / 犯罪 剧情 </p> <div class="star"> <span class="rating5-t"></span> <span class="rating_num" property="v:average">9.6</span> <span property="v:best" content="10.0"></span> <span>876443人评价</span> </div> <p class="quote"> <span class="inq">希望让人自由。</span> </p> </div> </div> </div> </li>这个里面就有我们想要的数据了。
保存预处理结果
将预处理的结果保存起来,其实不保存也可以。但是没网的时候就尴尬了。所以我准保存起来。保存其实挺简单的。我们只实现保存为.txt就行了。直接看代码
#保存文件def save(html): fh = open("完整豆瓣爬虫.txt",'w') fh.write(html) fh.close()
这是主函数挺好懂的,看看吧
if __name__ == '__main__': htmlPage = urlPage('https://movie.douban.com/top250') real = dispose(htmlPage) save(real) print real这样,我们想要的功能中爬取部分就实现了,接下来就是解析我们预处理的源码了。
阅读全文
1 0
- python爬取网页并作简单处理(python2.7.1) 一
- 简单的python爬取网页字符串内容并保存
- Python爬取简单网页
- Python爬取网页的编码处理
- Python简单的爬取网页信息并生成json文件与乱码解决小记
- python 爬取csdn网页并保存博客到本地
- Python爬取并分析网页【基本版】
- python爬取网页
- Python 网页爬取
- windows环境:Python 处理爬取网页的unicodeEncodeError(BeautifulSoup)
- python webdriver简单实例:爬取网页图片
- 利用python对网页和图片的简单爬取
- Python,分析爬取简单waterfall型网页的部分内容
- Python爬虫实战(三):简单爬取网页图片
- python 使用免费爬取百度首页 网页 简单案例
- python爬虫进阶(一):静态网页爬取
- python简单爬取热门文字段子并自动浏览
- Python2下载单张图片和爬取网页图片
- (算法分析Week2)3Sum[Medium]
- python类继承需要注意的问题
- PowerDesigner连接MySQL,建立逆向工程图解
- 查看缩略图dome.html
- Faster RCNN 源码解读(3.1) -- RPN源码结构介绍
- python爬取网页并作简单处理(python2.7.1) 一
- bzoj1818: [Cqoi2010]内部白点
- 2016 ACM/ICPC Asia Regional Qingdao Online 1003(AC自动机)
- JVM_0_序
- stat函数
- 生命之树
- 传道书节选
- NOIP集训Week 1总结
- Java编程案例之学生管理系统