Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.
官方文档地址:http://beautifulsoup.readthedocs.io/zh_CN/latest/ 建议看看官方文档,支持中文,而且写的足够详细。
安装
pip install beautifulsoup4 # 安装BeautifulSoup库
pip install lxml # 安装解释器
使用
简单来说就是将html传递给BeautifulSoup,建议选择解释器为lxml,速度更快。
下面是例子:
1、搜索微信公众平台人工智能
关键字的文章,并获取html.
import urllib.request
from bs4 import BeautifulSoup
url= "http://weixin.sogou.com/weixin?&type=2&query=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD&page=1"
headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
html=opener.open(url).read().decode('utf-8')
2、通过BeautifulSoup获取文章的链接
soup = BeautifulSoup(html, "lxml")
tags = soup.find_all('div', class_="txt-box")
a = 1
for tag in tags:
url = tag.a['href']
url = url.replace("amp;", "")
print(a)
print(url)
a += 1
3、下面是通过正则表达式获取文章的链接,可以发现用BeautifulSoup更加简单和优雅。
import re
listurlpat = '<div class="txt-box">.*?(http://.*?)"'
re.compile(listurlpat, re.S).findall(html)
4、将BeautifulSoup与正则表达式配合使用 爬取百度百科网页关键字的链接
import urllib.request
import re
from bs4 import BeautifulSoup
url= "https://baike.baidu.com/item/%E5%B7%B4%E7%B4%A2%E7%BD%97%E7%B1%B3%C2%B7%E7%86%8A"
headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
base_url = "https://baike.baidu.com"
opener = urllib.request.build_opener()
opener.addheaders = [headers]
html=opener.open(url).read().decode('utf-8')
soup = BeautifulSoup(html, "lxml")
tags = soup.find_all("a", {"target": "_blank", "href": re.compile("/item/(%.{2})+$")})
for i in tags:
print(base_url + i['href'])
https://baike.baidu.com/item/%E4%B8%96%E7%95%8C%E6%94%BF%E5%BA%9C https://baike.baidu.com/item/%E7%8E%8B%E4%B8%8B%E4%B8%83%E6%AD%A6%E6%B5%B7 https://baike.baidu.com/item/%E9%9D%A9%E5%91%BD%E5%86%9B …..