摘要:也就是用可視化的集搜客爬蟲(chóng)軟件針對(duì)亞馬遜圖書(shū)商品頁(yè)做一個(gè)采集規(guī)則,并結(jié)合規(guī)則提取器抓取網(wǎng)頁(yè)內(nèi)容。安裝集搜客爬蟲(chóng)軟件前期準(zhǔn)備進(jìn)入集搜客官網(wǎng)產(chǎn)品頁(yè)面,下載對(duì)應(yīng)版本。
1. 引言
前面文章的測(cè)試案例都用到了集搜客Gooseeker提供的規(guī)則提取器,在網(wǎng)頁(yè)抓取工作中,調(diào)試正則表達(dá)式或者XPath都是特別繁瑣的,耗時(shí)耗力,工作枯燥,如果有一個(gè)工具可以快速生成規(guī)則,而且可以可視化的即時(shí)驗(yàn)證,就能把程序員解放出來(lái),投入到創(chuàng)造性工作中。
之前文章所用的例子中的規(guī)則都是固定的,如何自定義規(guī)則再結(jié)合提取器提取我們想要的網(wǎng)頁(yè)內(nèi)容呢?對(duì)于程序員來(lái)說(shuō),理想的目標(biāo)是掌握一個(gè)通用的爬蟲(chóng)框架,每增加一個(gè)新目標(biāo)網(wǎng)站就要跟著改代碼,這顯然不是好工作模式。這就是本篇文章的主要內(nèi)容了,本文使用一個(gè)案例說(shuō)明怎樣將新定義的采集規(guī)則融入到爬蟲(chóng)框架中。也就是用可視化的集搜客GooSeeker爬蟲(chóng)軟件針對(duì)亞馬遜圖書(shū)商品頁(yè)做一個(gè)采集規(guī)則,并結(jié)合規(guī)則提取器抓取網(wǎng)頁(yè)內(nèi)容。
2. 安裝集搜客GooSeeker爬蟲(chóng)軟件 2.1. 前期準(zhǔn)備進(jìn)入集搜客官網(wǎng)產(chǎn)品頁(yè)面,下載對(duì)應(yīng)版本。我的電腦上已經(jīng)安裝了Firefox 38,所以這里只需下載爬蟲(chóng)。
打開(kāi)Firefox –> 點(diǎn)擊菜單工具 –> 附加組件 –> 點(diǎn)擊右上角附加組件的工具 –> 選擇從文件安裝附加組件 -> 選中下載好的爬蟲(chóng)xpi文件 –> 立即安裝
下一步
下一步
點(diǎn)擊瀏覽器菜單:工具-> MS謀數(shù)臺(tái) 彈出MS謀數(shù)臺(tái)窗口。
3.2 做規(guī)則在網(wǎng)址欄輸入我們要采集的網(wǎng)站鏈接,然后回車(chē)。當(dāng)頁(yè)面加載完成后,在工作臺(tái)頁(yè)面依次操作:命名主題名 -> 創(chuàng)建規(guī)則 -> 新建整理箱 -> 在瀏覽器菜單選擇抓取內(nèi)容,命名后保存。
打開(kāi)集搜客Gooseeke官網(wǎng),注冊(cè)登陸后進(jìn)入會(huì)員中心 -> API -> 申請(qǐng)API
(下載地址:?gooseeker/core at master · FullerHua/gooseeker · GitHub), 選擇一個(gè)存放目錄,這里為E:demogooseeker.py
5.2 與gooseeker.py同級(jí)創(chuàng)建一個(gè).py后綴文件如這里為E:Demothird.py,再以記事本打開(kāi),敲入代碼:
注釋?zhuān)捍a中的31d24931e043e2d5364d03b8ff9cc77e 就是API KEY,用你申請(qǐng)的代替;amazon_book_pc 是規(guī)則的主題名,也用你的主題名代替
# -*- coding: utf-8 -*- # 使用GsExtractor類(lèi)的示例程序 # 以webdriver驅(qū)動(dòng)Firefox采集亞馬遜商品列表 # xslt保存在xslt_bbs.xml中 # 采集結(jié)果保存在third文件夾中 import os import time from lxml import etree from selenium import webdriver from gooseeker import GsExtractor # 引用提取器 bbsExtra = GsExtractor() bbsExtra.setXsltFromAPI("31d24931e043e2d5364d03b8ff9cc77e", "amazon_book_pc") # 設(shè)置xslt抓取規(guī)則 # 創(chuàng)建存儲(chǔ)結(jié)果的目錄 current_path = os.getcwd() res_path = current_path + "/third-result" if os.path.exists(res_path): pass else: os.mkdir(res_path) # 驅(qū)動(dòng)火狐 driver = webdriver.Firefox() url = "https://www.amazon.cn/s/ref=sr_pg_1?rh=n%3A658390051%2Cn%3A!658391051%2Cn%3A658414051%2Cn%3A658810051&page=1&ie=UTF8&qid=1476258544" driver.get(url) time.sleep(2) # 獲取總頁(yè)碼 total_page = driver.find_element_by_xpath("http://*[@class="pagnDisabled"]").text total_page = int(total_page) + 1 # 用簡(jiǎn)單循環(huán)加載下一頁(yè)鏈接(也可以定位到下一頁(yè)按鈕,循環(huán)點(diǎn)擊) for page in range(1,total_page): # 獲取網(wǎng)頁(yè)內(nèi)容 content = driver.page_source.encode("utf-8") # 獲取docment doc = etree.HTML(content) # 調(diào)用extract方法提取所需內(nèi)容 result = bbsExtra.extract(doc) # 保存結(jié)果 file_path = res_path + "/page-" + str(page) + ".xml" open(file_path,"wb").write(result) print("第" + str(page) + "頁(yè)采集完畢,文件:" + file_path) # 加載下一頁(yè) if page < total_page - 1: url = "https://www.amazon.cn/s/ref=sr_pg_" + str(page + 1) + "?rh=n%3A658390051%2Cn%3A!658391051%2Cn%3A658414051%2Cn%3A658810051&page=" + str(page + 1) + "&ie=UTF8&qid=1476258544" driver.get(url) time.sleep(2) print("~~~采集完成~~~") driver.quit()5.3 執(zhí)行third.py
打開(kāi)命令提示窗口,進(jìn)入third.py文件所在目錄,輸入命令 :python third.py 回車(chē)
進(jìn)入third.py文件所在目錄,找到名稱(chēng)為result-2的文件夾然后打開(kāi)
制作規(guī)則時(shí),由于定位選擇的是偏好id,而采集網(wǎng)址的第二頁(yè)對(duì)應(yīng)頁(yè)面元素的id屬性有變化,所以第二頁(yè)內(nèi)容提取出現(xiàn)了問(wèn)題,然后對(duì)照了一下網(wǎng)頁(yè)元素發(fā)現(xiàn)class是一樣的,果斷將定位改為了偏好class,這下提取就正常了。下一篇《在Python3.5下安裝和測(cè)試Scrapy爬網(wǎng)站》簡(jiǎn)單介紹Scrapy的使用方法。
7. 集搜客GooSeeker開(kāi)源代碼下載源GooSeeker開(kāi)源Python網(wǎng)絡(luò)爬蟲(chóng)GitHub源
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44211.html
摘要:,引言本文講解怎樣用和使用接口下載內(nèi)容提取器,這是一個(gè)示例程序。具體請(qǐng)參看內(nèi)容提取器的定義。用下載內(nèi)容提取器可以直接跳到第部分的內(nèi)容。 showImg(https://segmentfault.com/img/bVyszb); 1,引言 本文講解怎樣用Java和JavaScript使用 GooSeeker API 接口下載內(nèi)容提取器,這是一個(gè)示例程序。什么是內(nèi)容提取器?為什么用這種方式...
摘要:用于數(shù)據(jù)分析和數(shù)據(jù)挖掘的網(wǎng)絡(luò)爬蟲(chóng)程序中,內(nèi)容提取器是影響通用性的關(guān)鍵障礙,如果這個(gè)提取器是從獲得的,您的網(wǎng)絡(luò)爬蟲(chóng)程序就能寫(xiě)成通用的框架。,相關(guān)文檔,即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目?jī)?nèi)容提取器的定義,集搜客開(kāi)源代碼下載源,開(kāi)源網(wǎng)絡(luò)爬蟲(chóng)源,文檔修改歷史, showImg(https://segmentfault.com/img/bVynLk); API說(shuō)明——下載gsExtractor內(nèi)容提取器 1,接口...
摘要:集搜客從文件讀取從字符串獲得通過(guò)接口獲得返回當(dāng)前提取方法,入?yún)⑹且粋€(gè)對(duì)象,返回是提取結(jié)果用法示例下面是一個(gè)示例程序,演示怎樣使用類(lèi)提取官網(wǎng)的帖子列表。 1. 項(xiàng)目背景 在python 即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目啟動(dòng)說(shuō)明中我們討論一個(gè)數(shù)字:程序員浪費(fèi)在調(diào)測(cè)內(nèi)容提取規(guī)則上的時(shí)間,從而我們發(fā)起了這個(gè)項(xiàng)目,把程序員從繁瑣的調(diào)測(cè)規(guī)則中解放出來(lái),投入到更高端的數(shù)據(jù)處理工作中。 2. 解決方案 為了解決這個(gè)問(wèn)...
摘要:,引言在即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目?jī)?nèi)容提取器的定義一文我們定義了一個(gè)通用的網(wǎng)絡(luò)爬蟲(chóng)類(lèi),期望通過(guò)這個(gè)項(xiàng)目節(jié)省程序員一半以上的時(shí)間。本文將用一個(gè)實(shí)例講解怎樣使用這個(gè)爬蟲(chóng)類(lèi)。我們將爬集搜客老版論壇,是一個(gè)用做的論壇。 showImg(https://segmentfault.com/img/bVxTdG); 1,引言 在《Python即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目: 內(nèi)容提取器的定義》一文我們定義了一個(gè)通用的pyt...
摘要:而分配任務(wù)的是會(huì)員中心的爬蟲(chóng)羅盤(pán),實(shí)現(xiàn)集中管理分布執(zhí)行。開(kāi)源即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目同樣也要盡量實(shí)現(xiàn)通用化。網(wǎng)址和提取規(guī)則本來(lái)應(yīng)該硬編碼到中的,現(xiàn)在隔離出來(lái),由會(huì)員中心進(jìn)行管理,那么就很容易做通用了。 showImg(https://segmentfault.com/img/bVyEnS); 1,引言 《Scrapy的架構(gòu)初探》一文所講的Spider是整個(gè)架構(gòu)中最定制化的一個(gè)部件,Spider...
閱讀 965·2021-11-17 09:33
閱讀 424·2019-08-30 11:16
閱讀 2478·2019-08-29 16:05
閱讀 3361·2019-08-29 15:28
閱讀 1402·2019-08-29 11:29
閱讀 1958·2019-08-26 13:51
閱讀 3396·2019-08-26 11:55
閱讀 1214·2019-08-26 11:31