HTML是www的信息组织方式,可将视频、图片、声音等超文本的信息嵌入到文本当中。它通过预定义的<>…>标签形式组织不同类型的信息。
1.XML:扩展标记语言(与html相近);
2.JSON:是JavaScript中面向对象的信息的一种表达形式,是由有类型的键值对构建的信息表达方式。
//一个键中有多个值
name:
-鼠标
-键盘
-充电宝
//一个键的值为键值对
name:
oldname:shubiao
newname:鼠标
XML:有效信息都在标签中,大多数信息被标签占用。
JSON:无论是键还是值都需要用双引号来表达他的类型
YAML:用简介的名字来表示信息
方法一: 完整地解析信息的标记形式,再提取关键信息。【需要标记解析器,如bs4库的标签树遍历】
方法二:无视标记形式,直接搜索关键信息。【对信息的文本查找函数即可】
方法三:融合方法:结合形式解析和搜索方法,提取相关信息【需要标记解析器及文本查找函数】
实例:提取HTML页面中所有的url链接
思路:
import requests
from bs4 import BeautifulSoup
url="https://www.python123.io/ws/demo.html"
r=requests.get(url)
demo=r.text
soup=BeautifulSoup(demo,"html.parser")
for link in soup.find_all('a'):
print(link.get('href'))
<>.find_all(name,attrs,recursive,string,**kwargs):返回一个列表类型,存储查找的结果。【如果find_all()中的参数为True,则显示当前文件中所有的标签名称】
import requests
from bs4 import BeautifulSoup
url="https://www.python123.io/ws/demo.html"
r=requests.get(url)
demo=r.text
soup=BeautifulSoup(demo,"html.parser")
soup.find_all('a') #查找a标签内容
soup.find_all(['a','b']) #以列表的形式查找a和b标签的内容
for tag in soup.find_all(True):
print(tag.name)
import requests
from bs4 import BeautifulSoup
url="https://www.python123.io/ws/demo.html"
r=requests.get(url)
demo=r.text
soup=BeautifulSoup(demo,"html.parser")
import re
for tag in soup.find_all(re.compile('b')): #查找以b开头的标签
print(tag.name)
soup.find_all('p','course') #查找含有course属性的p标签`
soup.find_all(id='link1') #查找id=link1的标签`
import re
soup.find_all(id=re.compile('link')); #查找id以link开头的标签
soup.find_all('a') #查找a标签
soup.find_all('a',recursive=False) #只查找当前标签的孩子标签是否有a标签
soup.find_all(string="Basic Python")
import re
soup.find_all(string=re.compile("python")) #检索所有含有python的字段
由于find_all(…)函数非常常用,故(…)等价于.find_all(…)。如:soup(…)等价于soup.find_all(…)
小编有话说:感谢路过的各位能够看到这里,本篇内容是学习嵩天教授的Python网络爬虫与信息提取课程.的笔记,感兴趣的您可以前去溜溜。