1、网页提取标签、及属性写入list
# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
html_doc3="""
<ul class="list-box"><li class="watched on"><a href="/video/BV1gp4y1q71w?p=1" class="" title="1.01 引言"><i class="van-icon-videodetails_play"></i><span class="s1">P1</span>
1.01 引言
</a></li><li class=""><a href="/video/BV1gp4y1q71w?p=2" class="" title="2.01 课前准备"><i class="van-icon-videodetails_play" style="display: none;"></i><span class="s1">P2</span>
(内容太多写不下,忽略)
4.11.10 集群_选举策略
</a></li><li class=""><a href="/video/BV1gp4y1q71w?p=863" class="" title="4.11.11 集群_搭建集群"><i class="van-icon-videodetails_play" style="display: none;"></i><span class="s1">P863</span>
4.11.11 集群_搭建集群
</a></li><li class=""><a href="/video/BV1gp4y1q71w?p=864" class="" title="4.11.12 Java操作ZK_连接Zookeeper"><i class="van-icon-videodetails_play" style="display: none;"></i><span class="s1">P864</span>
4.11.12 Java操作ZK_连接Zookeeper
</a></li><li class=""><a href="/video/BV1gp4y1q71w?p=865" class="" title="4.11.13 Java操作ZK_查询操作"><i class="van-icon-videodetails_play" style="display: none;"></i><span class="s1">P865</span>
4.11.13 Java操作ZK_查询操作
</a></li><li class=""><a href="/video/BV1gp4y1q71w?p=866" class="" title="4.11.14 Java操作ZK_增删改操作"><i class="van-icon-videodetails_play" style="display: none;"></i><span class="s1">P866</span>
4.11.14 Java操作ZK_增删改操作
</a></li><li class=""><a href="/video/BV1gp4y1q71w?p=867" class="" title="4.11.15 Java操作ZK_监听通知机制"><i class="van-icon-videodetails_play" style="display: none;"></i><span class="s1">P867</span>
4.11.15 Java操作ZK_监听通知机制
</a></li></ul>
"""
soup3 = BeautifulSoup(html_doc3,features="lxml")
titlelist=[]
# n = soup3.find_all('a')
def gettitle(soup, label, attr):
for x in soup.find_all(label):
title = x.get(attr)
#if title:
titlelist.append(title)
return titlelist
soup=soup3
label = 'a'
attr = 'title'
gettitle(soup, label, attr)
print(titlelist)
# with open('D:/tongbupan/13587/spiderforbilibili/zzzzz.txt','w+',encoding="utf-8") as f:
# for line in f:
# ff.write(line)
# ff.close()
2、list写入到txt文本
# -*- coding:utf-8 -*-
a=['1.01 引言', '2.01 课前准备', '2.02 安装环境JDK与JRE', '2.03 程序的定义、Java的历史', '2.04 Java的语言特点', '2.05 计算机执行机制与Java执行机制', '2.06 名词解释(JVM、JRE、JDK)', '2.07 Java环境变量的配置方式', '2.08 常用DOS命令', '2.09 第一个应用程序的书写', '2.10 编译源文件、运行字节码文件', '2.11 类的阐述与定义规范', '2.12 package关键字(上)', '2.13 package关键字(下)', '2.14 NotePad++编辑器的设置与使用', '2.15 编码规范之书写格式', '2.16 编码规范之单行注释与多行注释', '2.17 编码规范之文档注释', '2.18 编码规范之标识符命名规范', '2.19 概述与环境搭建总结', '3.01 内存的基本概念', '3.02 变量的概念与组成', '3.03 变量的声明、赋值、应用', '3.04 强类型与弱类型编程语言的区别', '3.05 变量的多种定义方式', '3.06 Java语言中数据类型的分类', '3.07 基本数据类型之整数(byte、short)', '3.08 基本数据类型之整数(int、long)', '3.09 基本数据类型之小数(float、double)基本应用', '3.10 基本数据类型之小数(float、double)科学计数法', '3.11 基本数据类型之小数(float、double)正负取值范围', '3.12 基本数据类型之布尔(boolean)', '3.13 字符相关前置知识之ASCII编码', '3.14 字符相关前置知识之Unicode编码', '3.15 基本数据类型之字符(char)', '3.16 字符相关后置知识之转义字符', '3.17 引用数据类型之字符串(String)', '3.18 自动类型转换', '3.19 强制类型转换(上)', '3.20 强制类型转换(下)', '3.21 运算符之算术运算符', '3.22 运算符之赋值运算符', '3.23 运算符之关系运算符', '3.24 运算符之逻辑运算符', '3.25 运算符之三元运算符', '3.26 Java中的表达式', '3.27 Java中的自动类型提升', '3.28 与String拼接的类型提升', '3.29 扫描仪控制台录入(上)', '3.30 扫描仪控制台录入(下)', '3.31 Java语言基础总结', '4.01 基本if选择结构', '4.02 if-else选择结构', '4.03 多重if选择结构', '4.04 嵌套if选择结构', '4.05 Switch分支结构(上)', '4.06 Switch分支结构(下)', '4.07 局部变量的特点与注意事项', '4.08 选择结构与分支结构总结', '5.01 循环的概念以及执行流程', '5.02 while循环以及循环的组成部分', '5.03 while循环的特点', '5.04 while循环解决具体问题(上)', '5.05 while循环解决具体问题(下)', '5.06 do-while循环的特点与执行流程', '5.07 do-while循环的应用场景及解决具体问题', '5.08 for循环的特点及执行流程', '5.09 for循环解决具体问题', '5.10 流程控制语句(break)特性', '5.11 流程控制语句(break)应用案例', '5.12 流程控制语句(continue)特性', '5.13 流程控制语句(continue)应用案例', '5.14 嵌套循环(矩形)', '5.15 嵌套循环(平均分)', '5.16 嵌套循环(直角三角形)', '5.17 嵌套循环(九九乘法表)', '5.18 循环结构总结', '6.01 方法的概述与应用前提', '6.02 方法定义的语法', '6.03 方法定义的位置', '