我们先来看一个实例,初探BS库的神奇之处。
import requests
from bs4 import BeautifulSoup
r=requests.get("http://www.zuihaodaxue.cn/Sport-Science-Schools-and-Departments-2016.html")
demo=r.content[:2000]
soup=BeautifulSoup(demo,"html.parser")
print(soup.prettify())
>>><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<meta content="上海软科于2016年6月15日发布软科世界一流学科排名”2016。此次学科排名发布的学科集中在工程领域,包括化学工程、土木工程、电力电子工程、能源科学与工程、环境科学与工程、材料科学与工程、机械工程共7个学科。" name="description">
<meta content="最好大学网" name="author">
<link href="images/favicon.png" rel="shortcut icon"/>
<title>
软科全球体育类院系学术排名 2016 | 最好大学网
</title>
<link href="./houtai/templates/css/bootstrap.min.css" rel="stylesheet">
<link href="./houtai/templates/css/template.css" rel="stylesheet">
</link>
</link>
</meta>
</meta>
</meta>
</meta>
</head>
</html>
<BS 对象名> = BeautifulSoup(<Html>,"解析器")
import requests
from bs4 import BeautifulSoup
r=requests.get("http://www.zuihaodaxue.cn/Sport-Science-Schools-and-Departments-2016.html")
demo=r.content[:1000]
soup=BeautifulSoup(demo,"html.parser")
#print(soup.prettify())
print(soup.meta.title)
print(soup.meta.name)
print(soup.meta.parent.name)
print(soup.meta.attrs)
print(soup.meta.string)
>>><title>软科全球体育类院系学术排名 2016 | 最好大学网</title>
meta
head
{'charset': 'utf-8'}
None
根据第一个实例,<head>标签和标签是父子关系,所以称到<head>的遍历过程是上行遍历。
for parent in soup.link.parents:
if parent in None:
print(parent)
else:
print(parent.name)
>>>meta
meta
meta
meta
head
html
[document]
***Repl Closed***
同理,反过来的话,<head>向遍历就是下行遍历。
import requests
from bs4 import BeautifulSoup
r=requests.get("http://www.zuihaodaxue.cn/Sport-Science-Schools-and-Departments-2016.html")
demo=r.content[:1000]
soup=BeautifulSoup(demo,"html.parser")
for child in soup.html.contents:
print(child)
>>><head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<meta content="上海软科于2016年6月15日发布软科世界一流学科排名”2016。此次学科排名发布的学科集中在工程领域,包括化学工程、土木工程、电力电子工程、能源科学与工程、环境科学与工程、材料科学与工程、机械工程共7个学科。" name="description">
<meta content="最好大学网" name="author">
<link href="images/favicon.png" rel="shortcut icon"/>
<title>软科全球体育类院系学术排名 2016 | 最好大学网</title>
<link href="./houtai/templates/css/bootstrap.min.css" rel="stylesheet">
<link href="./houtai/templates/css/template.css" rel="stylesheet">
</link></link></meta></meta></meta></meta></head>
例如,<head>和<body>之间就是平行关系,在他们之间遍历就是平行遍历。
import requests
from bs4 import BeautifulSoup
r=requests.get("http://www.zuihaodaxue.cn/Sport-Science-Schools-and-Departments-2016.html")
demo=r.content[:1000]
soup=BeautifulSoup(demo,"html.parser")
for sibling in soup.a.next_sibling:
print(sibling)
>>>None
信息标记的方式有三种:XML/JSON/YAML
soup.prettify()
prettify算是一种初级的格式化输出,本文第一例就是用到了此方法。
以后有更多补充