Python学习日志(五)

序言:
今天学习如何使用第三方工具Beautiful Soup来辅助Python写爬虫程序。

Beautiful Soup使用之前:
1.在使用工具之前要记住必须在工程里加入这个工具,可以用PIP协议,也可以在Pycharm的setting中进行一个配置下载。
2.直到显示安装成功,然后在PY文件里导入Beautiful Soup的包,语句如下:
from bs4 import BeautifulSoup;

Beautiful Soup具体使用时:
1.使用时需要先创建一个Soup对象,其中第二参数为解析器的模式(解析器有几种模式,具体分类可以到beautiful soup的文档中寻找,而html.parser为标准模式),语句具体如下:
soup = BeautifulSoup(此前你链接网站后保存的网站源码的变量,”html.parser”);
2.获取网站标签选择器中整体可以在网站源码中寻找到具体的该选择器然后进行获取,以title为例:
title = soup.title;
3.获取标签中的内容:
print("",title.string);
4. 获取标签的名称
print(“标签的名称:”,title.name);
5. 获取标签内容(注意,通过标签获取的时候默认只查找第一个数据)
link = soup.link;
6. 获取link标签中对应的值
print(“href:”,link[“href”]);
7. 查找标签的父容器名称
print(“Father’name:”,link.parent.name);
8. 查询到所有的link标签
links = soup.find_all(“link”);
print(“文件中所有的标签为:”,links);
for link_01 in links:
print(link_01);
print(link_01[“href”]);
pass
9.只匹配全文中第一个数据,需加限制条件
link_02 = soup.find(“link”,attrs={“rel”:“shortcut icon”});
10.查询:
div_01 = soup.find_all(“div”,attrs={“class”:“options”});
div_02 = div_01[0].find_all(“div”,attrs={“class”:“list”});
11. 循环输出文字:
for name in div_02:
print(name.string);
pass

使用其爬取mp3的具体案例:
def Get_data_mp3(data):
# 将数据转换成SOUP类型
soup = BeautifulSoup(data,“html.parser”);
# 查找相同数据
divs_mp3 = soup.find_all(“div”,attrs={“class”:“list ring_list”});
print(“音乐数目:”,len(divs_mp3));
# 查询每一条音乐
i = 1;
for div_mp3_item in divs_mp3:
print(“第%d个音乐:%s”%(i,div_mp3_item));
# 目标音乐:支付宝到账
mp3_name = div_mp3_item.find(“div”,attrs={“class”:“title”})[“title”];
print(“第%d首音乐的名称:%s”%(i,mp3_name));
# 下载量
mp3_downcount = div_mp3_item.find(“div”,attrs={“class”:“downcount”}).string;
print(“第%d首音乐的下载量:%s”%(i,mp3_downcount));
# 时长
mp3_longtime = div_mp3_item.find(“div”,attrs={“class”:“longtime”}).string;
print(“第%d首音乐的时长:%s” % (i, mp3_longtime));
mp3_url = div_mp3_item.find(“div”,attrs={“class”:“btn audio_play”})[“data-mp3”];
# 下载地址
print(“第%d首音乐的下载地址:%s” % (i, mp3_url));
# 存储到本地目录
mp3_file =open(“txte.txt”,“a”,1,encoding=“utf-8”);
mp3_file.write(“音乐名称:%s 下载量:%s 时长:%s 下载地址:%s\n”.center(10,"-")%(mp3_name,mp3_downcount,mp3_downcount,mp3_url));
# 本地存储音乐:
file_path = “C:/Users/Administrator/Desktop/8788/”;
if not os.path.exists(file_path):
os.makedirs(file_path);
pass
urllib.request.urlretrieve(mp3_url,"%s%s.mp3"%(file_path,mp3_name));
print(“第%d首音乐下载完毕。”);
i += 1;
pass
pass
Get_data_mp3(data);

发布了21 篇原创文章 · 获赞 1 · 访问量 1575

猜你喜欢

转载自blog.csdn.net/qq_33566628/article/details/88536884