Xpath単純マッチングラベル内容

6048 ワード

Xpath Xpathは、xmlドキュメントの一部の場所を特定するためのxmlパス言語です.Xpathを使用するにはlxmlライブラリをインストールする必要があります.lxmlはPythonのサードパーティライブラリです.インストール方法は、ライブラリファイルを直接ダウンロードしてpythonライブラリフォルダの下に手動で追加したり、pipを使用してインストールしたりすることができます.インポートモジュールfrom lxml import etree Selector=etree.HTML(Webソースコード)このコマンドは、WebソースコードをXpathによって識別され、一致するオブジェクトに変換することができ、Selector.xpath()カッコ内のパラメータは記号です.これにより、興味のある内容が一致することを認識することができる.
正規表現を用いて興味のあるコンテンツを探す場合は,興味のあるコンテンツの近くのコンテンツの特徴を知る必要がある.Xpathは違います.
XpathとHTMLの構造:HTMLは木の構造で、層ごとに展開することができて、層ごとに位置決めします.Xpathはこの特性に基づいて動作します.ここで、2本の斜線//はルートノードを配置し、1本の斜線/は下の層を探し、そのうちの1つのHTMLラベルは1層を表し、テキストの内容を抽出するのは/text()であり、ある属性の内容を抽出するには/@xxx(xxxは具体的な属性の名前)である.
まず、xpathを使用して一般コンテンツを抽出します.HTMLのラベルに基づいて位置決めします.次の短いコードのようにします.
# -*- coding: utf-8 -*-
"""
Created on Fri May 20 22:21:12 2016

@author: ldl
"""

from lxml import etree
html='''

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>  -    title>
head>
<body>
<div id="content">
    <ul id="useful">
        <li>       li>
        <li>       li>
        <li>       li>
    ul>
    <ul id=“useless”>
        <li>1      li>
        <li>2      li>
        <li>3      li>
    ul>

    <div id="url">
        <a href="  1">        a>
        <a href="  2" href2="  3">        a>
        <a href3="attribute">3      a>
   div>
div>

body>
html>
'''
selector=etree.HTML(html)

#      
content=selector.xpath('//ul[@id="useful"]/li/text()')
for each in content:
    print each

#         a    
content2=selector.xpath('//a/text()')
for each in content2:
    print each   

#    
content3=selector.xpath('//a/@href')
for each in content3:
    print each

content4=selector.xpath('//a/@href2')
print content4[0]

content5=selector.xpath('//a[@href3="attribute"]/text()')
print content5[0]

htmlは単純なWebページのソースコードを表し、etree.HTML(html)を使用してソースコードhtmlをxpathで処理可能なオブジェクトに変換し、xpathメンバーを呼び出して対応する処理を行い、興味のある内容を得る.出力テキストは、上のコードに示すxpathメンバーのパラメータ'//ul[@id="useful"]/li/text()'このパラメータは、ルートディレクトリの下にあるulタグ[]内の内容を表し、複数のulタグがある場合、どのタグをカッコ内の内容で特定するかを表し、後ろのスラッシュ後のliはliタグ/text()を表し、liタグの下に取るテキストの内容を表す.このとき、この文に基づいて得られる出力は、これが第1の情報であり、これが第2の情報である.従って、出力:これは第1の情報である第2の情報である第3の情報1に不要な情報2に不要な情報3に不要な情報である
出力属性は、上記のコードから抽出されたウェブページのコード:content 3=selector.xpath('//a/@href’)ソースコードhtmlのように、hrefに対応する等号右側がhrefの属性内容、すなわちhrefの値であり、その位置決め方式は前のテキストの位置決め方式と同じであるが、コンテンツの取り方式には差があり、テキストの内容を取るには直接text()を用い、属性を取るには@xxxを用い、xxxは取得する属性であり、この式はその属性の具体的な内容を取り出すものである.同様にcontent 3=selector.xpath('//a/@href')は、aラベルのhref 3に対応する属性内容を取り出した.ここでは、2つのラベルaの下にhrefがあるため、2つの属性を返すと返されます.ここでは、属性1属性2に注意して、xpathが取り出した内容はリスト形式で返されるので、1つの要素または1つの要素しか取り出していない場合は、リスト要素にアクセスするように取り出す必要があります.しかも上のhtmlの内容は比較的に簡単で、ラベルは複雑ではありませんて、そのためxpathの中の具体的なパラメータも比較的に簡単で、ラベルの階層の比較的に多いウェブページのファイルにとって、表現式の階層も比較的に明確であるべきで、1層1層のラベルは表示して、さもなくば他の同じラベルの内容に一致することを招きやすくて、本当に興味のある内容を探し出せません.