xpath (xml path language) 是一門在 xml 文件中查詢資訊的語言,可用來在 xml 文件中對元素和屬性進行遍歷。
謂語用來查詢某個特定的節點或者包含某個指定的值的節點,被嵌在方括號中。
xpath 萬用字元可用來選取未知的 xml 元素。
通過在路徑表示式中使用「|」運算子,您可以選取若干個路徑。
lxml 是 乙個html/xml的解析器,主要的功能是如何解析和提取 html/xml 資料。
lxml和正則一樣,也是用 c 實現的,是一款高效能的 python html/xml 解析器,我們可以利用之前學習的xpath語法,來快速的定位特定元素以及節點資訊。
需要安裝c語言庫,可使用 pip 安裝:pip install lxml
from urllib import request, parse
# 匯入lxml庫的etree類用來處理html原始檔,注意此處匯入的是lxml的3.7.1版本
from lxml import etree
class
tiebaspider
(object):
def__init__
(self):
self.tieba_name = input('請輸入要爬取的貼吧的名字:')
self.begin_page = int(input('請輸入要爬取的起始頁:'))
self.end_page = int(input('請輸入要爬取的終止頁:'))
self.baseurl = ''
self.headers =
deftieba_spider
(self):
'''貼吧爬蟲排程器,用來構造url'''
# 組合搜尋的關鍵字
keyword_name =
# 對關鍵字進行編碼,後面加不加encode(』utf-8『),要嘗試才只知道的
kw_name = parse.urlencode(keyword_name)
# 組合請求路徑
url = self.baseurl + kw_name
# 分頁處理的爬蟲,range()函式是包左不包右
for page in range(self.begin_page, self.end_page + 1):
pn_page = (page - 1) * 50
pn = parse.urlencode()
# 組合最全的url路徑
fullurl = url + '&' + pn
html = self.load_request(fullurl)
self.deal_page(html)
defload_request
(self, url):
'''傳送請求,返回html頁面'''
req = request.request(url, headers=self.headers)
try:
response = request.urlopen(req)
return response.read()
except:
defdeal_page
(self, html):
'''處理貼吧每一頁'''
# 轉換為html的dom
html = etree.html(html)
# 提取每一頁裡面每條帖子的鏈結,/p/1234567890,返回乙個列表
link_page = html.xpath('//div[@class="t_con cleafix"]/div/div/div/a/@href')
for every_page in link_page:
print('正在處理第%s頁' % every_page)
# 拼接url
url_page = '' + every_page
# 傳送請求,返回每個帖子的響應檔案
html = self.load_request(url_page)
self.load_image(html)
defload_image
(self, html):
html_image = etree.html(html)
link_image = html_image.xpath('//img[@class="bde_image"]/@src')
for every_image in link_image:
data = self.load_request(every_image)
self.write_image(data, every_image[-10:])
defwrite_image
(self, data, param):
print('正在儲存%s' % param)
'''把提取到的存放到本地磁碟檔案'''
with open(param, 'wb') as f:
f.write(data)
if __name__ == '__main__':
spider = tiebaspider()
spider.tieba_spider()
Python 爬蟲 資料解析之Xpath和Lxml
xpath xml path language 是一門在xml和html文件中查詢資訊的語言,可用來在xml和html文件中對元素和屬性進行遍歷。在 xpath 中,有七種型別的節點 元素 屬性 文字 命名空間 處理指令 注釋以及文件 根 節點。xml 文件是被作為節點樹來對待的。樹的根被稱為文件節...
Python之爬蟲 etree和XPath實戰
下面 是在 上找到的乙個例子,空閒的時候可以自己除錯。coding utf 8 爬蟲 創業邦 創業公司資訊爬取 網頁url 爬取頁面中的創業公司,融資階段,創業領域,成立時間和創業公司的鏈結資訊。使用到requests,json,codecs,lxml等庫 requests用於訪問頁面,獲取頁面的源...
python爬蟲XPath學習
xpath簡介和基本使用 1.前言 之前爬蟲的時候沒有用過xpath,就是沒用過lxml這個包,遇到json格式網頁我用的json.loads html格式用的beautifulsoup裡面有find和find all函式查詢標籤之類的。但是xpath在爬蟲裡面也算乙個比較重要的工具,當然要學習啦。...