Xpath
- Xpath是一種針對(duì)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行數(shù)據(jù)匹配的描述語言
- Xpath分析的目標(biāo)數(shù)據(jù):結(jié)構(gòu)化數(shù)據(jù)~標(biāo)記語言定義的數(shù)據(jù)[XML/HTML]
- 基本語法:針對(duì)加載的網(wǎng)頁文檔/xml文檔,轉(zhuǎn)換成文檔書結(jié)構(gòu),在文檔中根據(jù)基本語法在局部進(jìn)行數(shù)據(jù)匹配的操作
基于index.html的查詢操作
| 代碼 | 作用 |
|---|---|
| html | 查詢所有html的子節(jié)點(diǎn) |
| /html | 查詢根節(jié)點(diǎn)下的html節(jié)點(diǎn) |
/->根節(jié)點(diǎn)~文檔對(duì)象模型~document
| 代碼 | 作用 |
|---|---|
| //div | 模糊匹配路徑,查詢所有路徑下出現(xiàn)的div節(jié)點(diǎn) |
| //div/* | *模糊匹配節(jié)點(diǎn),查詢所有路徑下div的子節(jié)點(diǎn) |
| //div[@class] | 查詢包含class屬性的所有div節(jié)點(diǎn) |
| //div[@class="content"] | 查詢包含class屬性并且值為content的div節(jié)點(diǎn) |
- //div-->對(duì)象中包含的文本數(shù)據(jù)
- xpath對(duì)象.xpath("string(.)")~查詢到節(jié)點(diǎn)中所有的文本[包含子節(jié)點(diǎn)的文本]
- xpath對(duì)象.text~查詢節(jié)點(diǎn)中的文本[不包含子節(jié)點(diǎn)中的文本]
- 實(shí)際操作
- 通過工具進(jìn)行輔助,操作xpath進(jìn)行數(shù)據(jù)的匹配
- 瀏覽器中的Xpath插件
- 谷歌瀏覽器~Xpath Helper-->可以很方便在網(wǎng)頁中查詢對(duì)應(yīng)的數(shù)據(jù)
- 新版本Xpath插件中-->打開網(wǎng)頁,打開Xpath插件,在網(wǎng)頁中鼠標(biāo)懸停在需要選中的文本上,按下shift按鍵,就會(huì)自動(dòng)出現(xiàn)xpath描述的信息,然后根據(jù)自己的需要進(jìn)行修改即可~!
- 谷歌瀏覽器~Xpath Helper-->可以很方便在網(wǎng)頁中查詢對(duì)應(yīng)的數(shù)據(jù)
- python中怎么操作xpath
- python中默認(rèn)沒有xpath操作模塊,但是有一個(gè)第三方模塊lxml可以對(duì)結(jié)構(gòu)化數(shù)據(jù)Xpath操作進(jìn)行非常友好的支持
Beautifulsoup4
bs4是一種對(duì)性能的要求,時(shí)間的限制相對(duì)較弱的一種爬取方式.
bs4爬取數(shù)據(jù)
# 四種種安裝方式
pip install beautifulsoup4
easy_install beautifulsoup4
# 下載tar.gz包 pip setup.py install
# 拷貝別人的bs4文件夾,知己復(fù)制到site-pakages/目錄下即可
# 從程序中引入bs4
from bs4 import BeautifulSoup
# 從網(wǎng)頁文件中直接加載
soup = BeautifulSoup(open("index.html"), "lxml")
print(soup)
三種爬取方式的對(duì)比
| re | xpath | bs4 | |
|---|---|---|---|
| 安裝 | 內(nèi)置 | 第三方 | 第三方 |
| 語法 | 正則 | 路徑匹配 | 面向?qū)ο?/td> |
| 使用 | 困難 | 較困難 | 簡(jiǎn)單 |
| 性能 | 最高 | 適中 | 最低 |
- ps: 以為爬蟲程序,一般情況下對(duì)于數(shù)據(jù)處理性能問題,設(shè)計(jì)較少,所以對(duì)于爬蟲采集數(shù)據(jù),篩選數(shù)據(jù)并沒有性能要求!(時(shí)間要求比較充裕)