biblioteca hermosa sopa - Python reptil (b)

Hermosa sopa 4.4.0 documentos chinos

import requests
from bs4 import BeautifulSoup

url = 'http://python123.io/ws/demo.html'
r = requests.get(url)
demo = r.text
soup = BeautifulSoup(demo, "html.parser")

Los elementos básicos de la clase 1.Beautiful sopa


elementos básicos explicación
Etiqueta Etiqueta, la información básica medios de bloqueo, respectivamente <> y </> indicar el principio y el fin
Nombre etiqueta con su nombre, <p> ... </ p> nombre es 'p', el formato: <tag> .name
atributos Atributos de código, organizados en el diccionario, el formato: <etiqueta> .attrs
NavigableString no es la cadena atributo en la etiqueta, <> ... </> cadena en el formato: <tag> .string
Comentario Tenga en cuenta la parte de etiqueta de la cadena, un tipo especial comentario
# Tag
# 获取网页的标题
print(soup.title)
# <title>This is a python demo page</title>
# 获取html的a标签的内容
# 默认获取第一个标签
print(soup.a)

# Name
# 获取标签的名字
print('标签名字:', soup.a.name)

# Attributes
# 获取属性信息
tag = soup.a
print(tag.attrs)

# NavigableString
# 获取a标签的字符串信息
print(soup.a.string)

# Comment
new_soup = BeautifulSoup("<b><!--This is a comment--></b><p>This is not a comment</p>", "html.parser")

print(new_soup.b.string)
# This is a comment
print(type(new_soup.b.string))
# <class 'bs4.element.Comment'>
print(new_soup.p.string)
# This is not a comment
print(type(new_soup.p.string))
# <class 'bs4.element.NavigableString'>

2. El número de enlace descendente etiqueta traversal


propiedad explicación
.contenido Lista de nodos secundarios de la lista <etiqueta> de todos los nodos hijo en
.niños Iterator tipo de nodos secundarios, y .Contenido similares para el bucle itera nodo hijo
.descendientes Iterativo tipo de nodo descendiente, que comprende todos los nodos descendientes, un bucle a través
import requests
from bs4 import BeautifulSoup

r = requests.get("http://python123.io/ws/demo.html")
demo = r.text
soup = BeautifulSoup(demo, "html.parser")

# 获取body标签下的所有节点并存入列表中
print(soup.body.contents)
print(type(soup.body.contents))
# <class 'list'>

# 遍历儿子节点
for child in soup.body.children:
    print(child)

# 遍历子孙节点
for desc in soup.body.descendants:
    print(desc)

Atravesando el árbol 3. Etiqueta


propiedad explicación
.padre etiqueta nodo padre
.parents etiquetas de tipo nodo ancestro iterativos para un bucle a través del nodo ancestro
# 标签数的上行遍历
# 遍历a标签的所有父节点
for parent in soup.a.parents:
    if parent is None:
        print(parent)
    else:
        print(parent.name)

# title的父标签
print(soup.title.parent)

4. recorrido del árbol etiqueta paralelo


propiedad explicación
.proximo hermano Devuelve el siguiente nodo en paralelo de acuerdo con el procedimiento de la etiqueta de texto HTML
.previous_sibling Devuelve la etiqueta de texto HTML un nodo paralelo según el orden
.next_siblings tipo iterativo, texto HTML devuelve en orden para todos etiqueta nodo subsiguiente paralelo
.previous_siblings tipo iterativo, el retorno Continuación todo el texto etiquetas HTML nodos paralelas, de conformidad con el orden
# 遍历后续节点
for sibling in soup.a.next_siblings:
	print(sibling)

# 遍历前续节点
for sibling in soup.a.previous_siblings:
	print(sibling)

resumen:
Aquí Insertar imagen Descripción

biblioteca 5.bs4 prettify método ()


El texto de formato HTML el contenido o parte de la etiqueta (cada etiqueta se sumará una faja de espalda)

import requests
from bs4 import BeautifulSoup

r = requests.get("http://python123.io/ws/demo.html")
demo = r.text
soup = BeautifulSoup(demo, "html.parser")

print(soup.prettify())
print(soup.a.prettify())

6. El método Buscar


find_all(name, attrs, recursive, string, **kwargs):
Devuelve un tipo de lista, resultado de almacenamiento de las operaciones de búsqueda.

  • name: String para recuperar el nombre de la etiqueta
  • attrs: valores de atributos de búsqueda de etiqueta cadena de caracteres, búsqueda de atributos se pueden marcar
  • recursiva: Ya sea para recuperar todos los descendientes, por defecto Verdadera
  • Recuperando cadena de caracteres <> ... </> región de cadena: cadena
import requests
import re
from bs4 import BeautifulSoup

r = requests.get("http://python123.io/ws/demo.html")
soup = BeautifulSoup(r.text, "html.parser")

# 查找所有a标签
print(soup.find_all('a'))
print(type(soup.find_all('a')))
# <class 'bs4.element.ResultSet'>

for tag in soup.find_all('a'):
    print(tag.string)
# 显示a 和 b 标签
print(soup.find_all(['a', 'b']))

# 显示soup的所有标签信息
for tag in soup.find_all(True):
    print(tag.name)

# 使用正则表达式来查找含有b的标签
for tag in soup.find_all(re.compile('b')):
    print(tag.name)

# 查找p标签含有course的内容
print(soup.find_all('p', 'course'))

# 查找id属性为link1的内容
print(soup.find_all(id='link1'))

# 查找id属性为link的内容 没有则返回[]
print(soup.find_all(id='link'))

# 使用re模块来查找id属性包含link的内容
print(soup.find_all(id=re.compile('link')))

# 设置recursive参数为False, 这时从soup的子节点进行检索, 而不会去检索子孙节点的内容
print(soup.find_all('a', recursive=False))

# 检索字符串是否存在
print(soup.find_all(string="Basic Python"))

# 检索字符串是否含有python, 通过re
print(soup.find_all(string=re.compile('Python')))

El Consejo:
<Tag> (...) es equivalente a <Tag> .find_all (...)
Sopa (...) es equivalente a soup.find_all (...)

Métodos de extensión

método explicación
<>. Find () Buscar y sólo devuelve un resultado de tipo cadena, con .find_all () Parámetros
<>. Find_parents () Buscar antepasado nodo, devuelve una lista de tipos, con .find_all () Parámetros
<>. Find_parent () Antepasado nodo devuelve un resultado de tipo cadena, con .find () parámetros
<>. Find_next_siblings () En la búsqueda posterior de un nodo paralelo, devuelve una lista de tipos, el mismo .find_all () parámetros
<>. Find_next_sibling () En el posterior retorno a un nodo paralelo resultado, tipo de cadena, con .find () parámetros
<>. Find_previous_siblings () nodos de búsqueda de secuencias en paralelo en la parte delantera, devuelve una lista de tipos, el mismo .find_all () Parámetros
<>. Find_previous_sibling () Secuencia paralelo en el nodo frontal devuelve un resultado de tipo cadena, con .find () parámetros




Caso reptil

  1. Universidad China Clasificación reptiles dirigidas (solicitudes + BS4)
Ha publicado 190 artículos originales · alabanza 153 won · vistas 90000 +

Supongo que te gusta

Origin blog.csdn.net/qq_36852780/article/details/104330215
Recomendado
Clasificación