BeautifulSoup 官方文档 介绍:BeautifulSoup 是一个可以从HTML或XML文件嫌备中提取数据的Python库。使用BeautifulSoup更多方便,避免使用正则表达式容易出错,提高效率。
BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml。以下为BeautifulSoup官方文档对支持的解析器优缺点对比。
推荐使用lxml解释器,效率更高。 注意:不同的解析器返回不同的结果
通过答答解析器,BeautifulSoup可以传入一段字符串或文件。
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种: Tag , NavigableString , BeautifulSoup , Comment 。接下来使用以下文档进行说明。
可以看到a点只是返回第一个,如果需要历遍全部则需要用find_all('a')。
tag有多种属性,其中两个最重要的就是name和attributes。name一般返回标签本身(soup返回document), 注意,tag属性 *** 作方法和字典一样。
上面说到节点选择可以直接利用标签,如<head>标签用soup.head,也可通过name和attrs可以直接获取属性, *** 作和字典一样。以上是直接获芹举毁取的方式,当想要获取标签的子节点、父节点、兄弟节点则需要通过另外的方法。
.children 是一个llist生成器,可以对子节点进行历遍循环
.descendants 是返回所有子孙节点,比较children和descendants的输出区别
工具/原料安装了Python的腊胡电脑一台
方法/步骤
BeautifulSoup的安装过程也列在这里,方便读者:
进入BeautifulSoup的目录,执行
python setup.py build
python setup.py install
安肆局启装成功后发现import这个模块会出错
from XX import XX也不可以
而执行 from bs4 import BeautifulSoup就成功了。很奇怪,但是就是这样,模块名是bs4,它里面有BeautifulSoup对象。
bs4又该怎么知道呢?进入Python,执行help('modules'),然后需要等一段时间,python会裂如列出所有已安装模块。从中找和BeautifulSoup比较接近的,就是模块名了,bs4是首字母缩写,就是我们导入时需要的模块名。
创建一个新网站,一开始没有内容,通常需要抓取其他人的网页内容,一般的 *** 作步骤如下拆埋:根据url下载网昌御简页内容,针对每个网页的html结构特征,利用正则表达式,或者其他的方式,做文本解析,提取出想要的正文。
为每个网页写特征分析这个还是太耗费开发的时间,我的思路是这样的。
Python的BeautifulSoup包大家都知道吧,
import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(html)
利用这个包先把html里script,style给清理了:
[script.extract() for script in soup.findAll('script')]
[style.extract() for style in soup.findAll('style')]
清理完成后,这个包有一个prettify()函数,把代码格式给搞的标准一些:
soup.prettify()
然后用正则表达式,把所有的HTML标签全部清理了:
reg1 = re.compile("<[^>]*>")
content = reg1.sub('',soup.prettify())
剩下的都是纯文本耐裤的文件了,通常是一行行的,把空白行给排除了,这样就会知道总计有多少行,每行的字符数有多少,我用excel搞了一些每行字符数的统计
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)