正如我们所知道的那样,精准爬取一共三种方式
- re(正则库)
- beautifulsoup
- xpath
现在我们就看一下beautifulsoup吧,中文叫做美味汤,将一个HTML文档转化为指定对象 然后通过对象方法或者属性去查找指定的内容,实际上是帮助我们精准爬取指定内容的语法库吧
首先安装bs4 pip install bs4 需要依赖第三方库 piip install lxml
pip安装可能太慢了,所以你可以用咱国内的源。
我一直用的是清华大学的pip镜像,下载速度很快的
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple +库名
了解更多pip镜像,参阅此网页:
https://blog.youkuaiyun.com/sinat_21591675/article/details/82770360
bs4简单使用
导入 from bs4 import beautifulsoup
1 转化为本地文件
soup = BeautifulSoup(open(‘本地文件’),‘lxml’)
2 转化为网络文件
soup = BeautifulSoup(‘字符串类型或者字节类型’,lxml)
lxml 是一个解析器
1 根据标签名查找 只能找到第一个标签
2 获取属性
获取所以属性 soup.a.attrs 获取a标签的所有属性,以键值对的形式
soup.a.attrs['键名称'] 可以获取固定的值
3 获取内容
soup.a.text
soup.a.string 如果标签套标签,这个string是none
soup.a.get_text()
4 find
soup.find('a') 找到第一个符合要求的a
soup.find('a',title='qin')
soup.find('a',class_='du')
soup.find('a',id='feng')
不僅soup.find 普通div也可以find
soup.find_all('a') 返回列表
5 find_all
soup.find_all('a')
soup.find_all(['a','b'])
soup.find_all('a',limit=2)限制前兩個
6 select
根据选择器指定内容
常见的选择器: 标签、类选择器、id选择器、并集选择器、伪类选择器、属性选择器、层级选择器
select 返回的永远是一个列表,需要通过下标指定对象
soup.select('div ul li a')[3]
from bs4 import BeautifulSoup
#生成对象
soup = BeautifulSoup(open('textbs4.html',encoding='utf8'),'lxml')
div = soup.find('div',class_="tang")
print(div.select('.du').string)``