BeautifulSoup 主要用来解析和提取Htm网页中的数据
由于BeautifulSoup不是Python标准库,需要单独安装它,我们的学习系统已经安装好了。如果你是在自己的电脑上运行,需要在终端输入一行代码运行:pip install BeautifulSoup4
BeautifulSoup解析数据的用法很简单:
bs对象 = BeautifulSoup(要解析的文本,‘解析器’)
解析器,用的是一个Python内置库:html.parser。(它不是唯一的解析器,但是比较简单的)
Html爬虫步骤
以下以进度新闻为例,爬虫“热点新闻”标题与新闻连接地址
1.获取数据 requests.get(‘URL’)
geturl = requests.get('URL') #获取网页源代码,得到的url是response对象
2.解析数据 BeautifulSoup(geturl.text,‘html.parser’)
text_url = BeautifulSoup(geturl .text,'html.parser') #把网页解析为BeautifulSoup对象
3.提取数据 find()与find_all(),以及Tag对象
find()可以提取出首个元素,而find_all()可以提取出全部
pane_news = text_url.find_all('strong') # 通过定位标签和属性提取我们想要的数据
for i in pane_news: #循环读取pane_news 数据列表
newlist = i.find('a').text #获取新闻标题
newhref = i.find('a')['href'] #获取连接地址
print(newlist,newhref) #打印新闻标题和连接地址
打印结果:
4.存储数据
存储内容说明,查看Reptile_03 Cvs和xlsx存储
以下为完整代码:
import requests #调用requests库
from bs4 import BeautifulSoup
#----------获取数据
geturl = requests.get('http://news.baidu.com/') #获取网页源代码,得到的url是response对象
#----------解析数据
text_url = BeautifulSoup(geturl.text,'html.parser') #把网页解析为BeautifulSoup对象
#----------提取数据数据
pane_news = text_url.find_all('strong') # 通过定位标签和属性提取我们想要的数据
for i in pane_news: #循环读取pane_news 数据列表
newlist = i.find('a').text #获取新闻标题
newhref = i.find('a')['href'] #获取连接地址
print(newlist,newhref) #打印新闻标题和连接地址