多语言展示
当前在线:1238今日阅读:167今日分享:16

Python爬虫--BeautifulSoup(2)

基本上,你见过的每个网站都会有层叠样式表(Cascading Style Sheet, CSS)。虽然你能会认为,专门为了让浏览器和人类可以理解网站内容而设计一个展现样式的层,是一愚蠢的事,但是 CSS 的发明却是网络爬虫的福音。 CSS 可以让 HTML 元素呈现出差异化使那些具有完全相同修饰的元素呈现出不同的样式。比如,有一些标签看起来是这样:而另一些标签看起来是这样:网络爬虫可以通过 class 属性的值,轻松地区分出两种不同的标签。例如,它们可以用BeautifulSoup 抓取网页上所有的红色文字,而绿色文字一个都不抓。因为 CSS 通过属性确地呈现网站的样式, 所以你大可放心,大多数新式网站上的 class 和 id 属性资源都非丰富。
工具/原料
1

Python

2

BeautifulSoup

方法/步骤
1

首先,创建一个网络爬虫来抓取 http://www.pythonscraping.com/pages/warandpeace.htm这个网页并且生成BeautifulSoup对象。>>>from bs4 import BeautifulSoup>>>from urllib.request import urlopen>>>html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')>>>bsObj = BeautifulSoup(html.read())

2

通过 BeautifulSoup 对象,我们可以用 findAll 函数抽取只包含在 标签里的文字,这样就会得到一个人物名称的 Python 列表(findAll 是一个非常活的函数,我们后面会经常用到它):>>>nameList = bsObj.findAll('span',{'class':'green'})>>>for name in nameList:>>>     print(name.get_text())

3

什么时候使用 get_text() 与什么时候应该保留标签?.get_text() 会把你正在处理的 HTML 文档中所有的标签都清除,然后返回一个只包含文字的字符串。 假如你正在处理一个包含许多超链接、段落和标签的大段源代码, 那么 .get_text() 会把这些超链接、段落和标签都清除掉,只剩下一串不带标签的文字。

注意事项
1

用 BeautifulSoup 对象查找你想要的信息,比直接在 HTML 文本里查找信 息要简单得多。

2

通常在你准备打印、存储和操作数据时,应该最后才使 用 .get_text()。

推荐信息