>  기사  >  웹 프론트엔드  >  Beautiful Soup을 사용하여 DOM을 구문 분석하는 방법

Beautiful Soup을 사용하여 DOM을 구문 분석하는 방법

一个新手
一个新手원래의
2017-09-20 09:34:532468검색


Beautiful Soup을 사용하여 dom을 구문 분석하기

이 글에서는 주로 Beautiful Soup을 사용하여 dom을 구문 분석하는 방법을 소개합니다.

Beautiful Soup 소개

Beautiful Soup은 탐색, 검색, 구문 분석 트리 수정 및 기타 기능을 처리하는 몇 가지 간단한 Python 스타일 기능을 제공합니다. 문서를 구문 분석하여 크롤링에 필요한 데이터를 사용자에게 제공하는 도구 상자입니다. 간단하기 때문에 많은 코드 없이도 완전한 애플리케이션을 작성할 수 있습니다.
Beautiful Soup은 자동으로 입력 문서를 유니코드 인코딩으로 변환하고 출력 문서를 UTF-8 인코딩으로 변환합니다. 문서가 인코딩 방법을 지정하지 않는 한 인코딩 방법을 고려할 필요가 없습니다. 이 경우 뷰티플수프는 인코딩 방법을 자동으로 식별할 수 없습니다. 그런 다음 원래 인코딩을 지정하기만 하면 됩니다.
Beautiful Soup은 lxml 및 html6lib와 같은 뛰어난 Python 인터프리터가 되어 사용자에게 다양한 구문 분석 전략이나 강력한 속도를 제공할 수 있는 유연성을 제공합니다.

뷰티풀수프 설치

블로거는 맥을 사용하고 있는데, 여기서는 맥에서의 뷰티플수프 설치방법만 소개합니다. Python 타사 라이브러리 설치는 매우 간단합니다. 작성자는 항상 pip를 사용하여 설치했습니다.

Install pip

easy_install pip

Install Beautiful Soup

pip install beautifulsoup4

가끔 pip install beautifulsoup4 명령을 사용하여 설치할 때 오류가 보고될 때가 있습니다. 이때 권한을 얻으려면 명령 앞에 sudo를 추가해야 합니다.

sudo pip install beautifulsoup4

지금까지 준비가 완료되었으므로 이제 Beautiful Soup을 사용할 수 있습니다. 이 기사에서는 bs4의 일부 방법만 사용합니다(참고: 기사의 bs4=beautifulsoup4). bs4에 대해 더 자세히 알고 싶다면 포스터의 프로젝트인 Index.py를 확인하세요. 폴더에는 일부.html 정적 파일

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)
이 포함되어 있습니다.

위 내용은 Beautiful Soup을 사용하여 DOM을 구문 분석하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.