파이썬의 XPath 라이브러리 및 LXML의 파충류

1, LXML 및 XPath를 소개

  주요 작업이 파충류에게 HTML 문서를 크롤링하기 때문에, 따라서 우리의 마지막 선택에 라이브러리를 분석하여,뿐만 아니라 느린 개발의 효율성, 너무 느린 해상도 효율을 구문 분석하는 정규 표현식을 사용합니다.
  XPath는 (XML 경로 언어) 언어 정보를 찾을 수있는 XML 문서입니다, 또한 HTML을 검색 할 수 있습니다. lxml이 파이썬 HTML / XML 파서, 지원의 XPath 구문의 높은 성능 라이브러리입니다.

2, XPath를 규칙

그림 삽입 설명 여기

3, 라이브러리 LXML를 사용하여

3.1 가져 오기 HTML

def getHtml():
    text = """
        <tr>
            <td width="46">48</td>
            <td width="142" class="left"><a href="https://nba.hupu.com/players/terryrozier-150005.html">特里-罗齐尔</a></td>
            <td width="50"><a href="https://nba.hupu.com/teams/hornets">黄蜂</a></td>
            <td class="bg_b">18.00</td>
            <td>6.30-14.90</td>
            <td>42.3%</td>
            <td>2.70-6.70</td>
            <td>40.7%</td>
            <td>2.60-3.00</td>
            <td>87.4%</td>
            <td width="50">63</td>
            <td width="70">34.30</td>
        </tr>
        """
    html = etree.HTML(text=text)
    print(type(html))   # 将一段文本转化为lxml.etree._Element对象
    html = etree.tostring(html,encoding='utf-8').decode('utf-8')     # 将lxml.etree._Element对象转化为文本的二进制数据,再解码为utf-8
    return html

결과 출력은 :
그림 삽입 설명 여기

3.2, 모든 액세스 노드

from lxml import etree

def getHtml():
    text = """
        <tr>
            <td width="46">48</td>
            <td width="142" class="left"><a href="https://nba.hupu.com/players/terryrozier-150005.html">特里-罗齐尔</a></td>
            <td width="50"><a href="https://nba.hupu.com/teams/hornets">黄蜂</a></td>
            <td class="bg_b">18.00</td>
            <td>6.30-14.90</td>
            <td>42.3%</td>
            <td>2.70-6.70</td>
            <td>40.7%</td>
            <td>2.60-3.00</td>
            <td>87.4%</td>
            <td width="50">63</td>
            <td width="70">34.30</td>
        </tr>
        """
    html = etree.HTML(text=text)
    print(type(html))   # 将一段文本转化为lxml.etree._Element对象
    return html

if __name__ == '__main__':
    html = getHtml()
    elements = html.xpath('//*')
    for e in elements:
        print(e)

3.3, 속성 노드를 지정

html = getHtml()
    elements = html.xpath('//td[@class="left"]')
    for e in elements:
        print(e)

텍스트 3.4 액세스

from lxml import etree

def getHtml():
    text = """
        <tr>
            <td width="46">48</td>
            <td width="142" class="left"><a href="https://nba.hupu.com/players/terryrozier-150005.html">特里-罗齐尔</a></td>
            <td width="50"><a href="https://nba.hupu.com/teams/hornets">黄蜂</a></td>
            <td class="bg_b">18.00</td>
            <td>6.30-14.90</td>
            <td>42.3%</td>
            <td>2.70-6.70</td>
            <td>40.7%</td>
            <td>2.60-3.00</td>
            <td>87.4%</td>
            <td width="50">63</td>
            <td width="70">34.30</td>
        </tr>
        """
    html = etree.HTML(text=text)
    # print(type(html))   # 将一段文本转化为lxml.etree._Element对象
    return html

if __name__ == '__main__':
    html = getHtml()
    elements = html.xpath('//td[@class="left"]/a/text()')
    for e in elements:
        print(e)

3.5 다른 방법

  다른 노드 문서 방법, 기본적으로 유사한보고를 얻을 수 있습니다.

잘못된 장소를 표시하시기 바랍니다! 당신이 칭찬을 줄 수있는 경우에 문제가 있다는 생각! 우리는 코멘트 섹션 또는 개인 편지 교환을 환영합니다!

게시 30 개 원래 기사 · 원 찬양 72 ·은 10000 +를 볼

추천

출처blog.csdn.net/Orange_minger/article/details/104829484