python xpath爬虫_Python爬虫(2):XPath语法
OK,上次我們說到了網(wǎng)頁(yè)爬蟲的一個(gè)思路:首先說一下網(wǎng)頁(yè)爬蟲的整個(gè)思路方法:先爬取整個(gè)網(wǎng)頁(yè),也就是將網(wǎng)頁(yè)的源代碼給獲取下來
爬取下來的網(wǎng)頁(yè)再通過文本解析提取,找到我們需要的信息,可以是圖片或者文字
然后我們?nèi)腴T了python里一個(gè)非常好用的HTTP客戶端庫(kù):Requests,用來請(qǐng)求網(wǎng)址,以及得到一些響應(yīng)內(nèi)容,例如網(wǎng)頁(yè)的源代碼。
得到網(wǎng)頁(yè)源代碼之后,我們就可以來對(duì)網(wǎng)頁(yè)中的一些信息做一些解析提取。
我們這里介紹lxml庫(kù)和XPath語(yǔ)法來幫助我們完成信息的提取。
# 本文Python代碼版本2.7
XPath
XPath 是一門在 XML 文檔中查找信息的語(yǔ)言。XPath 可用來在 XML 文檔中對(duì)元素和屬性進(jìn)行遍歷,我們用來提取格式為HTML的網(wǎng)頁(yè)源碼效率也相當(dāng)高,可以遍歷html的各個(gè)標(biāo)簽和屬性,來定位到我們需要的信息的位置,并提取。
1,安裝
需要安裝lxml庫(kù)
pip install lxml
2,語(yǔ)法
舉例子之前來個(gè)常規(guī)語(yǔ)法介紹。詳細(xì)可參見W3school的XPath語(yǔ)法介紹。
3,案列說明
直接來個(gè)案例吧。這個(gè)網(wǎng)址:豆瓣電影排行榜
這里用谷歌瀏覽器打開開發(fā)者工具查看網(wǎng)頁(yè)源代碼(windows在谷歌瀏覽器界面按F12或者‘設(shè)置 -> 開發(fā)者工具’。Mac用戶兩個(gè)手指輕點(diǎn)頁(yè)面-> “檢查”)
鼠標(biāo)移動(dòng)到“豆瓣電影排行榜”,對(duì)應(yīng)右邊的開發(fā)者工具就會(huì)選中相應(yīng)的標(biāo)簽,即圖中的:
豆瓣電影排行榜
那我們?cè)囍脁path來獲取這個(gè)這個(gè)h1標(biāo)簽:
# coding:utf-8
import requests
# 上節(jié)的requests請(qǐng)求網(wǎng)頁(yè),得到網(wǎng)頁(yè)源代碼
url = 'https://movie.douban.com/chart'
r = requests.get(url).content
# 導(dǎo)入lxml庫(kù)和html.fromStringh函數(shù)來解析html
from lxml import html
# 調(diào)用html.fromString函數(shù)解析html源代碼
sel = html.fromstring(r)
# 提取h1標(biāo)簽,text()獲取該標(biāo)簽下的文本
title = sel.xpath("//h1/text()")
#這里返回的類型列表,而這個(gè)網(wǎng)頁(yè)中只有一個(gè)h1標(biāo)簽,索引為0來得到title
print type(title)
print title[0]
打印出來就得到我們需要的h1標(biāo)簽的標(biāo)題:
#
# 豆瓣電影排行榜
再來看看提取屬性方法,例如下面的這些電影的鏈接列表,是在a標(biāo)簽中的href屬性中。
要想精確的定位到該標(biāo)簽,我們能可以先定位到這個(gè)a標(biāo)簽的父標(biāo)簽div,
...因此可以寫成:
# coding:utf-8
import requests
from lxml import html
url = 'https://movie.douban.com/chart'
r = requests.get(url).content
sel = html.fromstring(r)
# 提取h1標(biāo)簽
title = sel.xpath("//h1/text()")
# 提取鏈接
links = sel.xpath('//div[@class="pl2"]/a/@href')
# 上面返回的是所有符合條件的鏈接的列表,for循環(huán)來讀取一下
for link in links:
print link
控制臺(tái)打印輸出:
4,最后
以上就是xpath的常見的用法,提取網(wǎng)頁(yè)信息一個(gè)高效的工具。大家可以試試提取這個(gè)網(wǎng)站的電影名稱,評(píng)分等等信息來練練手。
2,w3school的xpath語(yǔ)法教程:XPath 教程
總結(jié)
以上是生活随笔為你收集整理的python xpath爬虫_Python爬虫(2):XPath语法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c2064 项不会计算为接受0个参数的函
- 下一篇: python reduce函数_Pyth