欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python大數(shù)據(jù)之使用lxml庫(kù)解析html網(wǎng)頁(yè)文件示例

 更新時(shí)間:2019年11月16日 11:13:23   作者:xuehyunyu  
這篇文章主要介紹了Python大數(shù)據(jù)之使用lxml庫(kù)解析html網(wǎng)頁(yè)文件,結(jié)合實(shí)例形式分析了Python大數(shù)據(jù)操作中使用lxml庫(kù)解析html網(wǎng)頁(yè)具體步驟及相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python大數(shù)據(jù)之使用lxml庫(kù)解析html網(wǎng)頁(yè)文件。分享給大家供大家參考,具體如下:

lxml是Python的一個(gè)html/xml解析并建立dom的庫(kù),lxml的特點(diǎn)是功能強(qiáng)大,性能也不錯(cuò),xml包含了ElementTree ,html5lib ,beautfulsoup 等庫(kù)。

使用lxml前注意事項(xiàng):先確保html經(jīng)過了utf-8解碼,即code =html.decode('utf-8', 'ignore'),否則會(huì)出現(xiàn)解析出錯(cuò)情況。因?yàn)橹形谋痪幋a成utf-8之后變成 '/u2541' 之類的形式,lxml一遇到 "/"就會(huì)認(rèn)為其標(biāo)簽結(jié)束。

具體用法:元素節(jié)點(diǎn)操作

1、  解析HTMl建立DOM

from lxml import etree
dom = etree.HTML(html)

2、  查看dom中子元素的個(gè)數(shù) len(dom)

3、  查看某節(jié)點(diǎn)的內(nèi)容:etree.tostring(dom[0])

4、  獲取節(jié)點(diǎn)的標(biāo)簽名稱:dom[0].tag

5、  獲取某節(jié)點(diǎn)的父節(jié)點(diǎn):dom[0].getparent()

6、  獲取某節(jié)點(diǎn)的屬性節(jié)點(diǎn)的內(nèi)容:dom[0].get("屬性名稱")

對(duì)xpath路徑的支持:

XPath即為XML路徑語(yǔ)言,是用一種類似目錄樹的方法來描述在XML文檔中的路徑。比如用"/"來作為上下層級(jí)間的分隔。第一個(gè)"/"表示文檔的根節(jié)點(diǎn)(注意,不是指文檔最外層的tag節(jié)點(diǎn),而是指文檔本身)。比如對(duì)于一個(gè)HTML文件來說,最外層的節(jié)點(diǎn)應(yīng)該是"/html"。

xpath選取元素的方式:

1、  絕對(duì)路徑,如page.xpath("/html/body/p"),它會(huì)找到body這個(gè)節(jié)點(diǎn)下所有的p標(biāo)簽

2、  相對(duì)路徑,page.xpath("http://p"),它會(huì)找到整個(gè)html代碼里的所有p標(biāo)簽。

xpath篩選方式:

1、  選取元素時(shí)一個(gè)列表,可通過索引查找[n]

2、  通過屬性值篩選元素p =page.xpath("http://p[@style='font-size:200%']")

3、  如果沒有屬性可以通過text()(獲取元素中文本)、position()(獲取元素位置)、last()等進(jìn)行篩選

獲取屬性值

dom.xpath(.//a/@href)

獲取文本

dom.xpath(".//a/text()")

示例代碼:

#!/usr/bin/python
# -*- coding:utf-8 -*-
from scrapy.spiders import Spider
from lxml import etree
from jredu.items import JreduItem
class JreduSpider(Spider):
  name = 'tt' #爬蟲的名字,必須的,唯一的
  allowed_domains = ['sohu.com']
  start_urls = [
    'http://www.sohu.com'
  ]
  def parse(self, response):
    content = response.body.decode('utf-8')
    dom = etree.HTML(content)
    for ul in dom.xpath("http://div[@class='focus-news-box']/div[@class='list16']/ul"):
      lis = ul.xpath("./li")
      for li in lis:
        item = JreduItem() #定義對(duì)象
        if ul.index(li) == 0:
          strong = li.xpath("./a/strong/text()")
          li.xpath("./a/@href")
          item['title']= strong[0]
          item['href'] = li.xpath("./a/@href")[0]
        else:
          la = li.xpath("./a[last()]/text()")
          item['title'] = la[0]
          item['href'] = li.xpath("./a[last()]/href")[0]
        yield item

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python pickle模塊常用方法代碼實(shí)例

    Python pickle模塊常用方法代碼實(shí)例

    這篇文章主要介紹了Python pickle模塊常用方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python使用LSTM實(shí)現(xiàn)銷售額預(yù)測(cè)詳解

    Python使用LSTM實(shí)現(xiàn)銷售額預(yù)測(cè)詳解

    大家經(jīng)常會(huì)遇到一些需要預(yù)測(cè)的場(chǎng)景,比如預(yù)測(cè)品牌銷售額,預(yù)測(cè)產(chǎn)品銷量。本文給大家分享一波使用?LSTM?進(jìn)行端到端時(shí)間序列預(yù)測(cè)的完整代碼和詳細(xì)解釋,需要的可以參考一下
    2022-07-07
  • Python開發(fā)加薪利器之Docker的使用實(shí)踐

    Python開發(fā)加薪利器之Docker的使用實(shí)踐

    docker利用容器技術(shù),獨(dú)立運(yùn)行一個(gè)或者一組應(yīng)用,docker是基于go語(yǔ)言開發(fā),docker鏡像好比是一個(gè)模版,可以通過這個(gè)模版來創(chuàng)建容器服務(wù),今天通過本文給大家分享Docker的使用實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • python 計(jì)算數(shù)組中每個(gè)數(shù)字出現(xiàn)多少次--“Bucket”桶的思想

    python 計(jì)算數(shù)組中每個(gè)數(shù)字出現(xiàn)多少次--“Bucket”桶的思想

    這篇文章主要介紹了python 計(jì)算數(shù)組中每個(gè)數(shù)字出現(xiàn)多少次--“Bucket”桶的思想,需要的朋友可以參考下
    2017-12-12
  • Python Collatz序列實(shí)現(xiàn)過程解析

    Python Collatz序列實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Python Collatz序列實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 關(guān)于Python可視化Dash工具之plotly基本圖形示例詳解

    關(guān)于Python可視化Dash工具之plotly基本圖形示例詳解

    這篇文章主要介紹了關(guān)于Python可視化Dash工具之plotly基本圖形示例詳解,需要的朋友可以參考下
    2021-03-03
  • Pandas爆炸函數(shù)的使用技巧

    Pandas爆炸函數(shù)的使用技巧

    同事舉了個(gè)簡(jiǎn)單的例子來說明爆炸函數(shù)的功能,我當(dāng)場(chǎng)就記下了這個(gè)函數(shù)名稱:爆炸函數(shù)。Hive在我的工作中使用的并不多,于是我在想:Pandas能夠?qū)崿F(xiàn)這個(gè)功能嗎?本文就來了解一下
    2021-05-05
  • Python中dtype、type()和astype()的區(qū)別詳解

    Python中dtype、type()和astype()的區(qū)別詳解

    這篇文章主要介紹了Python中dtype、type()和astype()的區(qū)別詳解,type()是python內(nèi)置的函數(shù),type()返回?cái)?shù)據(jù)結(jié)構(gòu)類型(list、dict、numpy.ndarray 等),需要的朋友可以參考下
    2023-08-08
  • Python實(shí)現(xiàn)AI自動(dòng)玩俄羅斯方塊游戲

    Python實(shí)現(xiàn)AI自動(dòng)玩俄羅斯方塊游戲

    提到《俄羅斯方塊》,那真是幾乎無(wú)人不知無(wú)人不曉。其歷史之悠久,可玩性之持久,能手輕輕一揮,吊打一大波游戲。本文將利用Python實(shí)現(xiàn)俄羅斯方塊進(jìn)階版—AI自動(dòng)玩俄羅斯方塊,感興趣的可以學(xué)習(xí)一下
    2022-03-03
  • 用Python的線程來解決生產(chǎn)者消費(fèi)問題的示例

    用Python的線程來解決生產(chǎn)者消費(fèi)問題的示例

    這篇文章主要介紹了用Python的線程來解決生產(chǎn)者消費(fèi)問題的示例,包括對(duì)使用線程中容易出現(xiàn)的一些問題給出了相關(guān)解答,需要的朋友可以參考下
    2015-04-04

最新評(píng)論