기사 디렉토리
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 다른 방법
다른 노드 문서 방법, 기본적으로 유사한보고를 얻을 수 있습니다.
잘못된 장소를 표시하시기 바랍니다! 당신이 칭찬을 줄 수있는 경우에 문제가 있다는 생각! 우리는 코멘트 섹션 또는 개인 편지 교환을 환영합니다!