关于BeautifulSoup

Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下:

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

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这 时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

正题

首先,安装BeautifulSoup

网上下载包,解压到python根目录

然后cmd

输入 cd  BeautifulSoup包的路径/setup。py install

然后我们就可以使用BeautifulSoup了

打开sublime

首先引用这个

Python网络爬虫篇 - 初探BeautifulSoup

然后,我们今天要做的爬取这个团队官网的这些文章title

Python网络爬虫篇 - 初探BeautifulSoup

查看源码,分析一下我们需要爬取的内容

Python网络爬虫篇 - 初探BeautifulSoup

这里可以看到,我们可以通过<h2 class=”title“><a匹配标题

下一步就是headers了

Python网络爬虫篇 - 初探BeautifulSoup

这就是headers了,我们用一个字典把他给装起来

通过上一篇文章(Python网络爬虫篇 – Requests的简单使用)的方法,我们先爬取源码,再通过BeautifulSoup对源代码进行分析,并提取出我们想要的内容

通过一下代码获取源码

r = requests.get("https://www.chabug.org/",headers=headers)

再通过如下代码匹配出标题

list = BeautifulSoup(r.text,"html.parser").find("h2",{"class","title"},"a")

OK,成功匹配出了一个标题

Python网络爬虫篇 - 初探BeautifulSoup

下面,我们通过修改代码把全部的标题匹配出来

我们把刚刚list那就修改为这样即可
list = BeautifulSoup(r.text,"html.parser").findAll("h2",{"class","title"},"a")

在find后加一个all就行了,来看看效果图吧。

Python网络爬虫篇 - 初探BeautifulSoup

ok,关于BeautifulSoup的简单使用也就到这结束了

下面就是这个脚本的源码,有需要学习的朋友自行Copy

from bs4 import BeautifulSoup
import requests
headers = {
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"accept-encoding" : "gzip, deflate, sdch, br",
"accept-language" : "zh-CN,zh;q=0.8",
"cache-control" : "max-age=0",
"cookie" : "Hm_lvt_e7d0b4f222c86066771d7246bd3dd18c=1529754348; Hm_lpvt_e7d0b4f222c86066771d7246bd3dd18c=1529754348",
"upgrade-insecure-requests" : "1",
"user-agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
}
r = requests.get("https://www.chabug.org/",headers=headers)
list = BeautifulSoup(r.text,"html.parser").findAll("h2",{"class","title"},"a")
for x in list:
print(x.text)

 

总结

关于网络爬虫,个人感觉,正则表达式很重要,然而BeutifulSoup给我们的功能却大大的方便了我们爬虫,我们可以不需要绞尽脑汁的想正则表达式了

只需要匹配标签以及属性值就可以提取出自己需要的数据,当然,各位要是不嫌麻烦,re肯定也是可以的。