import lxml
import requests
from bs4 import BeautifulSoup
html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!--Elsie--></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
#1、BeautifulSoup对象
soup = BeautifulSoup(html,'lxml')
print(type(soup))
#2、Tag对象
print(soup.head,'\n')
print(soup.head.name,'\n')
print(soup.head.attrs,'\n')
print(type(soup.head))
#3、Navigable String对象
print(soup.title.string,'\n')
print(type(soup.title.string))
#4、Comment对象
print(soup.a.string,'\n')
print(type(soup.a.string))
#5、结构化输出soup对象
print(soup.prettify())
import requests
import lxml
import json
from bs4 import BeautifulSoup
html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!--Elsie--></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup = BeautifulSoup(html,'html.parser')
#1、向下遍历
print(soup.p.contents)
print(list(soup.p.children))
print(list(soup.p.descendants))
#2、向上遍历
print(soup.p.parent.name,'\n')
for i in soup.p.parents:
print(i.name)
#3、平行遍历
print('a_next:',soup.a.next_sibling)
for i in soup.a.next_siblings:
print('a_nexts:',i)
print('a_previous:',soup.a.previous_sibling)
for i in soup.a.previous_siblings:
print('a_previouss:',i)
import requests
import lxml
import json
from bs4 import BeautifulSoup
html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!--Elsie--></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup = BeautifulSoup(html,'html.parser')
#1、find_all( )
print(soup.find_all('a')) #检索标签名
print(soup.find_all('a',id='link1')) #检索属性值
print(soup.find_all('a',class_='sister'))
print(soup.find_all(text=['Elsie','Lacie']))
#2、find( )
print(soup.find('a'))
print(soup.find(id='link2'))
#3 、向上检索
print(soup.p.find_parent().name)
for i in soup.title.find_parents():
print(i.name)
#4、平行检索
print(soup.head.find_next_sibling().name)
for i in soup.head.find_next_siblings():
print(i.name)
print(soup.title.find_previous_sibling())
for i in soup.title.find_previous_siblings():
print(i.name)
import requests
import lxml
import json
from bs4 import BeautifulSoup
html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!--Elsie--></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup = BeautifulSoup(html,'html.parser')
print('标签查找:',soup.select('a'))
print('属性查找:',soup.select('a[id="link1"]'))
print('类名查找:',soup.select('.sister'))
print('id查找:',soup.select('#link1'))
print('组合查找:',soup.select('p #link1'))
from bs4 import BeautifulSoup
with open("/var/www/html/Test/index.html", "r") as f:
soup = BeautifulSoup(f, "lxml")
f = open("/var/www/html/Test/I18N_index.html", "w+")
for h2 in soup.find_all('h2'):
i18n_string = "I18N_"+h2.string
h2.string.replace_with(i18n_string)
print(h2.string)
f.write(str(soup))