网页爬虫工具BeautifulSoup
在使用爬虫工具爬取网页的内容时,经常会出现网页格式不规范、标签不完整等等问题,导致在抓取的过程中出现内容无法爬取、内容中含有html标签等等影响结果的错误
安装、引入
- 安装
pip install beautifulsoup4
- 引入模块
from bs4 import BeautifulSoup
主要方法、使用规则
生成beautifulSoup对象
soup = BeautifulSoup(html)
或者打开本地HTML
soup = BeautifulSoup(open('index.html'))
在Python3中应该使用写法:
soup = BeautifulSoup(html, "lxml")
输出soup:
<html><head>我是head</head><title>我是title</title><body><p>我是一个p</p><p>我也是一个p</p></body></html>
格式化对象
arr = soup.prettify()
简单来说, prettify()方法只是让soup对象看上去像树形的xml而已,他们的内容是相同的,是指后者让标签之间换了行
格式化之后我们得到的内容应该是:<html> <head>我是head</head> <title>我是title</title> <body> <p>我是一个p</p> <p>我也是一个p</p> </body> </html>
解析Soup对象
对于soup之后的树形结构,我们使用以下方法来获取某个Tag:
print(soup.title) :<title>我是title</title>
使用下列方法获取文本内容:
print(soup.title.string) : 我是title
如何获取所有内容呢?
for string in soup.strings: print(string) :\r\n 我是head \r\n \r\n 我是title \r\n \r\n 我是一个p \r\n \r\n 我也是一个p \r\n
对于空行、换行我们当然是需要过滤的:
for string in soup.stripped_strings: print(string) : 我是head 我是head 我是一个p 我也是一个p