Python 使用 BeautifulSoup 抓取网页

2017-01-15
次阅读
2 分钟阅读时长

刚刚手贱不小心把前两篇 Python 的文章给删了,关键是我还没有备份!心里一万只草泥马奔腾而过。。。这件事情告诉我们,记得备份!记得备份!记得备份!重要的事情说三遍!

关于 BeautifulSoup

Beautiful Soup 提供一些简单的、Python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

安装 BeautifulSoup

下载完成后将安装包解压到某个目录中(示例为D:\tools)。解压后安装程序的目录为 D:\tools\beautifulsoup4-4.5.3。

在cmd命令行中使用 cd D:\tools\beautifulsoup4-4.5.3 命令进入程序目录。输入 python setup.py install 开始安装 BeautifulSoup。

使用 BeautifulSoup 抓取网页

安装完成以后就可以开始编码了,首先导入 urllib2 和 bs4。

import urllib2 # urllib 库提供了一个从指定的 URL 地址获取网页数据
from bs4 import BeautifulSoup

创建一个Resquest请求,其中 https://her-cat.com 是请求的站点地址,这里使用的是我的博客网址。

request = urllib2.Request('https://her-cat.com')

一些网站做了 User-Agent 判断,防止非正常用户访问页面,所以我们可以给这个 Request 请求添加一个请求头部数据,用于伪造 User-Agent。

request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36')

获取 HTML 内容并创建 BeautifulSoup 对象

html = urllib2.urlopen(request)
soup = BeautifulSoup(html, 'html.parser')

然后我们这个 BeautifulSoup 对象使用一些方法来获取想要的内容。

print(soup.prettify()) # 格式化输入html文本
soup.select('span.comment_text')  # 找到所有类名为comment_text的span标签

查找该网页中所有的 a 标签:

for link in soup.find_all('a'):
    print(link.get('href'))  # 输出a标签中的href属性值
    print(link.get_text())  # 查询a标签的文本内容

关于 BeautifulSoup 的安装和使用就到此结束了~

这是一篇过去很久的文章,其中的信息可能已经有所发展或是发生改变。

本文作者:她和她的猫
本文地址https://her-cat.com/posts/2017/01/15/python-beautiful-soup-collect-page/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!