Heim > Artikel > Web-Frontend > So verwenden Sie Beautiful Soup zum Parsen von DOM
In diesem Artikel wird hauptsächlich beschrieben, wie Sie Beautiful Soup zum Parsen von Dom verwenden.
Beautiful Soup bietet einige einfache Funktionen im Python-Stil für die Navigation, Suche, Änderung von Analysebäumen und andere Funktionen. Es handelt sich um eine Toolbox, die Benutzern durch Parsen von Dokumenten die Daten liefert, die sie zum Crawlen benötigen. Da es einfach ist, können Sie eine vollständige Anwendung ohne viel Code schreiben.
Beautiful Soup konvertiert Eingabedokumente automatisch in die Unicode-Kodierung und Ausgabedokumente in die UTF-8-Kodierung. Sie müssen die Kodierungsmethode nicht berücksichtigen, es sei denn, das Dokument gibt keine Kodierungsmethode an. In diesem Fall kann Beautiful Soup die Kodierungsmethode nicht automatisch identifizieren. Anschließend müssen Sie nur noch die ursprüngliche Kodierungsmethode angeben.
Beautiful Soup hat sich zu einem hervorragenden Python-Interpreter wie lxml und html6lib entwickelt und bietet Benutzern die Flexibilität, verschiedene Parsing-Strategien oder eine hohe Geschwindigkeit bereitzustellen.
Der Blogger verwendet einen Mac. Hier stellen wir nur die Installationsmethode von Beautiful Soup unter Mac vor. Die Installation von Python-Bibliotheken von Drittanbietern ist sehr einfach. Der Autor hat immer pip zur Installation verwendet.
pip installieren
easy_install pip
Beautiful Soup installieren
pip install beautifulsoup4
Manchmal wird ein Fehler gemeldet, wenn wir zur Installation den Befehl pip install beautifulsoup4 verwenden. Zu diesem Zeitpunkt müssen wir sudo vor dem Befehl hinzufügen, um Berechtigungen zu erhalten.
sudo pip install beautifulsoup4
Unsere Vorbereitungen sind soweit abgeschlossen, jetzt können wir mit der Verwendung von Beautiful Soup beginnen. In diesem Artikel werden nur einige Methoden von bs4 verwendet (Hinweis: bs4=beautifulsoup4 im Artikel). Wenn Sie mehr über bs4 erfahren möchten, können Sie sich die offizielle Dokumentation von bs4 ansehen. Das Projekt ist sehr einfach: index.py und ein HTML-Ordner. die eine statische HTML-Datei
index.py-Datei
# 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('<p>content</p>') 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('utf-8') #打开相应的文件写入模式,打开文件不要放入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)enthält
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Beautiful Soup zum Parsen von DOM. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!