#Python BeautifulSoup# 文章列表 Python BeautifulSoup 简介 Python BeautifulSoup 安装 Python BeautifulSoup:根据 HTML 标签名获取元素 Python BeautifulSoup:根据 class 获取元素 Python BeautifulSoup:根据 id 获取元素 Python BeautifulSoup:使用 name 获取 HTML 标签名 Python BeautifulSoup:使用 get_text 获取 HTML 标签文本内容 Python BeautifulSoup:使用 attrs 处理 HTML 标签属性 Python BeautifulSoup:使用 decode_contents 获取 HTML 标签嵌套的 HTML 内容 Python BeautifulSoup:嵌套获取元素 Python BeautifulSoup:使用 find 和 find_all 查找元素 Python BeautifulSoup:使用 select_one 和 select 查找元素 Python BeautifulSoup:使用 append 追加内容 Python BeautifulSoup:使用 insert 插入内容 Python BeautifulSoup:使用 clear 清空内容 Python BeautifulSoup:设置内容 Python BeautifulSoup:使用 string 获取和设置 HTML 标签内容 Python BeautifulSoup:使用 extract 删除 HTML 标签 Python BeautifulSoup:使用 prettify 格式化 HTML Python BeautifulSoup:获取前后的同级元素 Python BeautifulSoup:使用 find_previous、find_next 获取当前元素前后的元素 Python BeautifulSoup:使用 find_parent 获取父元素 Python BeautifulSoup:使用 wrap 为元素增加父元素 Python BeautifulSoup 实战:去除 HTML 中的注释 Python BeautifulSoup 实战:去除 HTML 中的 script Python BeautifulSoup 实战:解析 oschina 首页内容 Python BeautifulSoup 实战:解析微信公众号文章列表 Python BeautifulSoup 实战:替换 href 属性内容

Python BeautifulSoup 实战:解析 oschina 首页内容


#Python BeautifulSoup#


本文代码基于 Python 2.7 。

导入必要的库:

from bs4 import BeautifulSoup
import urllib2  #用来下载网页

创建函数get_data_from_url()用来下载网页内容:

def get_data_from_url(url):
    """ 下载来自url的数据 """
    headers = {'User-agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0',}
    req = urllib2.Request(url, None, headers)
    resp = urllib2.urlopen(req)
    return resp.read()

创建BeautifulSoup对象:

soup = BeautifulSoup(get_data_from_url('http://www.oschina.net/'))

如何获取title标签的内容:

print soup.title
print soup.title.name
print soup.title.string

会输出:

<title>开源中国 - 找到您想要的开源项目,分享和交流</title>
title
开源中国 - 找到您想要的开源项目,分享和交流

如何获取该网页设置的关键字: 可以看到关键字在 标签里,但是http://www.oschina.net/包含了多个meta标签,我们可以遍历这些标签,找到name属性的值为keywords的meta标签,然后提取出关键词(在content属性里)。下面是手动提取的meta标签以供参考:

<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<meta content="开源,OSC,开源软件,开源硬件,开源网站,开源社区,java开源,perl开源,python开源,ruby开源,php开源,开源项目,开源代码" name="Keywords">
<meta content="开源中国 www.oschina.net 是目前中国最大的开源技术社区。我们传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。" name="Description">

代码如下:

for meta in soup.find_all("meta"):
    if meta.has_attr("name") and meta["name"].lower().strip() == "keywords":
        print meta["content"]

这段代码的执行结果如下:

开源,OSC,开源软件,开源硬件,开源网站,开源社区,java开源,perl开源,python开源,ruby开源,php开源,开源项目,开源代码

( 本文完 )