記事のディレクトリ
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その他の方法
他のノードのドキュメント方法、基本的には同様に注目することによって得ることができます。
間違った場所を記入してください!あなたが賞賛を与えることができれば、それはトラブルにあったと思いました!私たちは、コメント欄やプライベートの手紙の交換を歓迎します!