Python爬蟲(八)數(shù)據(jù)處理方法之Xpath

在學(xué)習(xí)本小節(jié)的知識之前,對于Xpath的語法最好有一個簡單的了解若贮。如果不是很了解的省有,可以看一下我的另一篇文章Xpath之爬蟲常用方法總結(jié)痒留。

爬蟲數(shù)據(jù)Xpath處理步驟

  • lxml
    Python爬蟲(七)數(shù)據(jù)處理方法之JSON中我們講到,通過response.content.decode()解碼之后得到的是str類型的數(shù)據(jù)蠢沿。若想得到支持我們使用xpath進行提取數(shù)據(jù)的Element對象伸头,則需要用到python中的另外一個庫lxml。
    lxml是python的一個解析庫舷蟀,支持HTML和XML的解析熊锭,支持XPath解析方式,而且解析效率非常高雪侥。通過lxml下的etree.HTML()對html文本進行解析,得到Element對象精绎。其使用方法非常簡單:etree.HTML(html文本)
    下面通過一個簡單的例子速缨,我們來看看etree.HTML輸出了什么類型數(shù)據(jù)。
from lxml import etree

url = 'http://http://fanyi.youdao.com/'
response = requests.get(url, headers=headers)
html_str = response.content.decode()
print(type(html_str))
html = etree.HTML(html_str)
print(html)

輸出結(jié)果如下:<class 'str'> <Element html at 0x3290f88>代乃,這說明了通過etree.HTML得到了html的Element對象旬牲。

  • Xpath提取數(shù)據(jù)
    得到了Element對象之后,我們就可以利用Xpath對網(wǎng)頁的數(shù)據(jù)進行提取搁吓。接下來我們以豆瓣書籍下的日本文學(xué)排名有例子原茅,講解怎么提取數(shù)據(jù)。
    豆瓣Xpath.png

    通過xpath helper我們自己定位到書名的xpath為//ul[@class="subject-list"]/li/div[2]/h2/a/text()堕仔。
import requests
from lxml import etree

url1 = 'https://book.douban.com/tag/%E6%97%A5%E6%9C%AC%E6%96%87%E5%AD%A6?start=0&type=T/'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
response = requests.get(url1, headers=headers)
html_str = response.content.decode()
html = etree.HTML(html_str)
#創(chuàng)建xpath列表
html_name = html.xpath("http://ul[@class='subject-list']/li")
for li in html_name:
    item = {}
    #獲取到每一個li下的書籍名字擂橘,并去除多余的\n
    item['name'] = li.xpath('./div[2]/h2/a/text()')[0].replace("\\n", " ").strip()
    print(item)

輸出結(jié)果如下:
豆瓣輸出結(jié)果.png

至此,我們就爬取到了該網(wǎng)頁下的所有書籍名字了摩骨。

  • 總結(jié)
    使用xpath提取爬蟲數(shù)據(jù)一共就兩個步驟:
    1.通過etree.HTML()獲取到html的Element對象通贞。
    2.通過html.xpath(xpath路徑)提取到我們想要的數(shù)據(jù)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末恼五,一起剝皮案震驚了整個濱河市昌罩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灾馒,老刑警劉巖茎用,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異睬罗,居然都是意外死亡轨功,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門傅物,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夯辖,“玉大人漱办,你說我怎么就攤上這事箭养。” “怎么了蒋畜?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長啄栓。 經(jīng)常有香客問我娄帖,道長,這世上最難降的妖魔是什么昙楚? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任近速,我火速辦了婚禮,結(jié)果婚禮上堪旧,老公的妹妹穿的比我還像新娘削葱。我一直安慰自己,他們只是感情好淳梦,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布析砸。 她就那樣靜靜地躺著,像睡著了一般爆袍。 火紅的嫁衣襯著肌膚如雪首繁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天陨囊,我揣著相機與錄音弦疮,去河邊找鬼。 笑死蜘醋,一個胖子當(dāng)著我的面吹牛胁塞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播堂湖,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼闲先,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了无蜂?” 一聲冷哼從身側(cè)響起伺糠,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斥季,沒想到半個月后训桶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡酣倾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年舵揭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躁锡。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡午绳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出映之,到底是詐尸還是另有隱情拦焚,我是刑警寧澤蜡坊,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站赎败,受9級特大地震影響秕衙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜僵刮,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一据忘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搞糕,春花似錦勇吊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辈赋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膏燕,已是汗流浹背钥屈。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坝辫,地道東北人篷就。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像近忙,于是被迫代替她去往敵國和親竭业。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355