爬虫的步骤解析内容xpath介绍_爬虫入门到精通-网页的解析(xpath)
在爬蟲入門到精通第五講中,我們了解了如何用正則表達式去抓取我們想要的內容.這一章我們來學習如何更加簡單的來獲取我們想要的內容.
xpath的解釋
XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。
XPath基于XML的樹狀結構,提供在數據結構樹中找尋節點的能力。起初XPath的提出的初衷是將其作為一個通用的、介于XPointer與XSL間的語法模型。但是XPath很快的被開發者采用來當作小型查詢語言。
XPath的基本使用
要使用xpath我們需要下載lxml,在爬蟲入門到精通-環境的搭建這一章也說明怎么裝,如果還沒有安裝的話,那就去下載安裝吧
直接看代碼實戰吧。
from lxml import etree
# 定義一個函數,給他一個html,返回xml結構
def getxpath(html):
return etree.HTML(html)
# 下面是我們實戰的第一個html
sample1 = """
My pageWelcome to my page
This is the first paragraph.
"""
# 獲取xml結構
s1 = getxpath(sample1)
# 獲取標題(兩種方法都可以)
#有同學在評論區指出我這邊相對路徑和絕對路徑有問題,我搜索了下
#發現定義如下圖
s1.xpath('//title/text()')
s1.xpath('/html/head/title/text()')
相對路徑與絕對路徑
總結及注意事項
獲取文本內容用 text()
獲取注釋用 comment()
獲取其它任何屬性用@xx,如
@href
@src
@value
sample2 = """
- Quote 1
- Quote 2 with link
- Quote 3 with another link
Quote 4 title
...
"""
s2 = getxpath(sample2)
總結及注意事項
上面的li 可以更換為任何標簽,如 p、div
位置默認以1開始的
最后一個用 li[last()] 不能用 li[-1]
這個一般在抓取網頁的下一頁,最后一頁會用到
sample3 = """
- Scrapybegin
- Scrapinghub
- Scrapinghub Blog
- Quotes To Scrapeend
- Quotes To Scrapeend
"""
s3 = getxpath(sample3)
總結及注意事項
根據html的屬性或者文本直接定位到當前標簽
文本是 text()='xxx'
其它屬性是@xx='xxx'
這個是我們用到最多的,如抓取知乎的xsrf(見下圖)
我們只要用如下代碼就可以了
`//input[@name="_xsrf"]/@value `
sample4 = u"""
My pageWelcome to my page
This is the first paragraph.
編程語言python
javascript
C#JAVA
a
b
c
d
e
f
"""
s4 = etree.HTML(sample4)
總結及注意事項
想要獲取某個標簽下所有的文本(包括子標簽下的文本),使用string
如
123來獲取我啊
,這邊如果想要得到的文本為123來獲取我啊",則需要使用stringstarts-with 匹配字符串前面相等
contains 匹配任何位置相等
當然其中的(@class,"content")也可以根據需要改成(text(),"content")或者其它屬性(@src,"content")
最后再次總結一下
看完本篇文章后,你應該要
能學會基本所有的xpath的使用
css和這個的原理一樣,所以就不介紹了,可以參考
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的爬虫的步骤解析内容xpath介绍_爬虫入门到精通-网页的解析(xpath)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特斯拉供应商 IDRA 将为沃尔沃汽车提
- 下一篇: java链表实现_数据结构——基于jav