python-74:按原格式下载BS4官方文档
2016-01-06 00:00
495 查看
好了,前面也进行了几次失败的尝试,我来总结一下啊
首先,我们所有的尝试本质上是基于一个方法,直接将获取出来的所有数据一次性删除。我们选择了一个看似最简单的方法,我们将数据获取出来之后想直接将所有数据一次性删除,一劳永逸,现实是我们失败了,但没关系这是一个很好的做法,在面对事情的时候一开始先尝试最简单的方法,这是一个很好的选择,只是我们运气不好罢了。其实我觉得上一小节还是很重要的,这些问题都是我在学习过程中遇到的,刚好有机会一起整理出来,希望能给遇到相同问题的人一个解决的思路
既然前面的尝试不成功,那么我们就来换一种思路,我不能一次性把你全部删除,那我一条一条的删除总可以了吧
好了,方向已经找好了,现在来考虑细节
我觉得一开始处理很多条数据的话会很容易造成混乱,所以我决定只删除一条数据看看是什么结果,前面也已经说过了,find()函数是返回匹配到的第一个结果,就是它了,拟定的大致流程应该是:使用find()函数获取第一个要删除的标签,然后使用clear()进行删除,再将结果输出看是否成功,根据流程我写下了这样的代码:
结果显示第一个符号已经被删除了
这说明我们的这个尝试应该是奏效的,现在我们来想想怎么将这个方法应用到我们所有要删除的tag中来
首先我第一个想的是在循环里面实现,先设置一个while循环,判断find(attrs={"class": "headerlink"})的返回值,当返回值不为空时一直使用find函数将第一个删除标签找出来并将它删除,当返回值为空时执行另外的操作
前面为了更好的获取全部数据我们使用了find_all函数,find_all 返回的是一个列表,既然是列表,那我应该可以对它进行操作,我可以直接遍历这个列表并对列表里面的每一个元素做删除处理,这也是一个很好的尝试而且看起来比上衣个要好一点,所以我写了下面的代码来进行测试
结果是这样的
我们看到的结果中已经那个符号已经被删除了,说明了在使用列表遍历删除的方法是可以成功的
好了,我们已经能够按照原来的格式将文章正文下载下来,这个实例到这里就基本完成了,我们加上写入文件的部分来看看最终的效果是怎样的吧
首先,我们所有的尝试本质上是基于一个方法,直接将获取出来的所有数据一次性删除。我们选择了一个看似最简单的方法,我们将数据获取出来之后想直接将所有数据一次性删除,一劳永逸,现实是我们失败了,但没关系这是一个很好的做法,在面对事情的时候一开始先尝试最简单的方法,这是一个很好的选择,只是我们运气不好罢了。其实我觉得上一小节还是很重要的,这些问题都是我在学习过程中遇到的,刚好有机会一起整理出来,希望能给遇到相同问题的人一个解决的思路
既然前面的尝试不成功,那么我们就来换一种思路,我不能一次性把你全部删除,那我一条一条的删除总可以了吧
好了,方向已经找好了,现在来考虑细节
我觉得一开始处理很多条数据的话会很容易造成混乱,所以我决定只删除一条数据看看是什么结果,前面也已经说过了,find()函数是返回匹配到的第一个结果,就是它了,拟定的大致流程应该是:使用find()函数获取第一个要删除的标签,然后使用clear()进行删除,再将结果输出看是否成功,根据流程我写下了这样的代码:
import urllib2 from bs4 import BeautifulSoup url = 'http://beautifulsoup.readthedocs.org/zh_CN/latest/#' request = urllib2.Request(url) response = urllib2.urlopen(request) contents = response.read() soup = BeautifulSoup(contents) result = soup.find(itemprop="articleBody") result.find(attrs={"class": "headerlink"}).clear() print result.get_text()
结果显示第一个符号已经被删除了
这说明我们的这个尝试应该是奏效的,现在我们来想想怎么将这个方法应用到我们所有要删除的tag中来
首先我第一个想的是在循环里面实现,先设置一个while循环,判断find(attrs={"class": "headerlink"})的返回值,当返回值不为空时一直使用find函数将第一个删除标签找出来并将它删除,当返回值为空时执行另外的操作
前面为了更好的获取全部数据我们使用了find_all函数,find_all 返回的是一个列表,既然是列表,那我应该可以对它进行操作,我可以直接遍历这个列表并对列表里面的每一个元素做删除处理,这也是一个很好的尝试而且看起来比上衣个要好一点,所以我写了下面的代码来进行测试
#!/usr/bin/env python # -*- coding:UTF-8 -*- __author__ = '217小月月坑' ''' 去掉不和谐的符号 ''' import urllib2 from bs4 import BeautifulSoup url = 'http://beautifulsoup.readthedocs.org/zh_CN/latest/#' request = urllib2.Request(url) response = urllib2.urlopen(request) contents = response.read() soup = BeautifulSoup(contents) result = soup.find(itemprop="articleBody") for i in result.find_all(attrs={"class": "headerlink"}): i.clear() print result.get_text()
结果是这样的
我们看到的结果中已经那个符号已经被删除了,说明了在使用列表遍历删除的方法是可以成功的
好了,我们已经能够按照原来的格式将文章正文下载下来,这个实例到这里就基本完成了,我们加上写入文件的部分来看看最终的效果是怎样的吧
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- 爬虫笔记
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- python windows下的file()