PythonのXPathのライブラリとlxmlのの爬虫類

1、lxmlのとXPath紹介

  主な仕事は、クロール爬虫類HTML文書であるので、それによって、私たちの最後の選択に解析するライブラリを使用して、開発の効率化が遅い、遅すぎる解像度効率だけでなく、解析する正規表現を使用しています。
  XPathの(XMLパス言語)の言語で情報を見つけるためのXML文書である、また、HTMLを取得するために使用することができます。lxmlのは、Python 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