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