Maison > interface Web > js tutoriel > Comment utiliser Beautiful Soup pour analyser le DOM

Comment utiliser Beautiful Soup pour analyser le DOM

一个新手
Libérer: 2017-09-20 09:34:53
original
2518 Les gens l'ont consulté


Utiliser Beautiful Soup pour analyser dom

Cet article présente principalement comment utiliser Beautiful Soup pour analyser dom.

Introduction à Beautiful Soup

Beautiful Soup fournit des fonctions simples de style python pour gérer la navigation, la recherche, la modification des arbres d'analyse et d'autres fonctions. Il s'agit d'une boîte à outils qui fournit aux utilisateurs les données dont ils ont besoin pour analyser des documents. Parce que c'est simple, vous pouvez écrire une application complète sans beaucoup de code.
Beautiful Soup convertit automatiquement les documents d'entrée en codage Unicode et les documents de sortie en codage UTF-8. Vous n'avez pas besoin de prendre en compte la méthode de codage, sauf si le document ne spécifie pas de méthode de codage, auquel cas Beautiful Soup ne peut pas identifier automatiquement la méthode de codage. Ensuite, il vous suffit de spécifier la méthode d’encodage d’origine.
Beautiful Soup est devenu un excellent interpréteur Python comme lxml et html6lib, offrant aux utilisateurs la flexibilité de proposer différentes stratégies d'analyse ou une vitesse élevée.

Installation de Beautiful Soup

Le blogueur utilise un mac Nous présentons ici uniquement la méthode d'installation de Beautiful Soup sous mac. L'installation des bibliothèques tierces python est très simple. L'auteur a toujours utilisé pip pour l'installation.

Installer pip

easy_install pip
Copier après la connexion

Installer Beautiful Soup

pip install beautifulsoup4
Copier après la connexion

Parfois, lorsque nous utilisons la commande pip install beautifulsoup4 pour installer, une erreur sera signalée. À ce stade, nous devons ajouter sudo avant la commande pour obtenir les autorisations.

sudo pip install beautifulsoup4
Copier après la connexion

Maintenant que nos préparations sont terminées, nous pouvons maintenant commencer à utiliser Beautiful Soup. Cet article n'utilise que certaines méthodes de bs4 (remarque : bs4=beautifulsoup4 dans l'article). Si vous souhaitez en savoir plus sur bs4, vous pouvez consulter la documentation officielle de bs4. Le projet de l'affiche est très simple index.py et un dossier html, qui contient un fichier statique .html

fichier index.py

# coding=utf-8import osfrom bs4 import BeautifulSoupimport sys 

#定义一个list来存放文件路径paths=[]#获取所有的文件路径def get_paths():
    for fpathe,dirs,fs in os.walk('html'):        
    for f in fs:            
    #print os.path.join(fpathe,f)
            #将拼接好的path存放到list中
            filepath=os.path.join(fpathe,f)            
            #只放入.html后缀文件路径
            if(os.path.splitext(f)[1]==".html"):
                paths.append(filepath)#读取html文件修改后并写入相应的文件中去def reset_file(path):
    #判断文件是否存在
    if not os.path.isfile(path):        
    raise TypeError(path + " does not exist")    
    #读取文件,bs4自动将输入文档转换为Unicode编码,
    #输出文档转换为utf-8编码,bs4也可以直接读取html
    #字符串,例如BeautifulSoup(&#39;<p>content</p>&#39;)
    soup=BeautifulSoup(open(path))    
    #select是bs4提供的方法,和jquery的$选择器一样
    #方便。可以标签(eg:p,title,p...)来查找,也
    #也可以通过css的 class .和id #来查找,基本上和我们
    #使用$一样。

    #选取id="nav"节点下的所有li元素里面的a标签,返回值是一个list集合
    nav_a=soup.select("#nav li a")    
    #修改a的href属性
    if(len(nav_a)>1):
        nav_a[0]["href"]="/m/"
        nav_a[1]["href"]="/m/about_mobile/m_about.html"

    #选取class="footer"里的所有a标签
    footer_a=soup.select(".footer a")    
    if(len(footer_a)>0):
        footer_a[1]["href"]="/m/about_mobile/m_sjdt.html"

    content_p=soup.select(".content p")    
    #修改<p>我是string</p>里面的文本内容
    if(len(content_p)>0):
        content_p[0].string="修改p标签里面的测试内容"

    #修改系统的默认编码
    reload(sys)                    
    sys.setdefaultencoding(&#39;utf-8&#39;) 

    #打开相应的文件写入模式,打开文件不要放入try里面,否则会
    #出现异常
    f=open(path,"w")    try:        
    #写入文件
        f.write(soup.prettify())    finally:        
    #关闭文件
        file.close()#定义main函数程序的入口    
        if __name__=="__main__":
    get_paths()    
    #遍历所有文件路径
    for p in paths:
        reset_file(p)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal