国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

快速制作規則及獲取規則提取器API

itvincent / 3231人閱讀

摘要:也就是用可視化的集搜客爬蟲軟件針對亞馬遜圖書商品頁做一個采集規則,并結合規則提取器抓取網頁內容。安裝集搜客爬蟲軟件前期準備進入集搜客官網產品頁面,下載對應版本。

1. 引言

前面文章的測試案例都用到了集搜客Gooseeker提供的規則提取器,在網頁抓取工作中,調試正則表達式或者XPath都是特別繁瑣的,耗時耗力,工作枯燥,如果有一個工具可以快速生成規則,而且可以可視化的即時驗證,就能把程序員解放出來,投入到創造性工作中。

之前文章所用的例子中的規則都是固定的,如何自定義規則再結合提取器提取我們想要的網頁內容呢?對于程序員來說,理想的目標是掌握一個通用的爬蟲框架,每增加一個新目標網站就要跟著改代碼,這顯然不是好工作模式。這就是本篇文章的主要內容了,本文使用一個案例說明怎樣將新定義的采集規則融入到爬蟲框架中。也就是用可視化的集搜客GooSeeker爬蟲軟件針對亞馬遜圖書商品頁做一個采集規則,并結合規則提取器抓取網頁內容。

2. 安裝集搜客GooSeeker爬蟲軟件 2.1. 前期準備

進入集搜客官網產品頁面,下載對應版本。我的電腦上已經安裝了Firefox 38,所以這里只需下載爬蟲。

2.2 安裝爬蟲

打開Firefox –> 點擊菜單工具 –> 附加組件 –> 點擊右上角附加組件的工具 –> 選擇從文件安裝附加組件 -> 選中下載好的爬蟲xpi文件 –> 立即安裝

下一步

下一步

3. 開始制作抓取規則 3.1 運行規則定義軟件

點擊瀏覽器菜單:工具-> MS謀數臺 彈出MS謀數臺窗口。

3.2 做規則

在網址欄輸入我們要采集的網站鏈接,然后回車。當頁面加載完成后,在工作臺頁面依次操作:命名主題名 -> 創建規則 -> 新建整理箱 -> 在瀏覽器菜單選擇抓取內容,命名后保存。

4. 申請規則提取器API KEY

打開集搜客Gooseeke官網,注冊登陸后進入會員中心 -> API -> 申請API

5. 結合提取器API敲一個爬蟲程序 5.1 引入Gooseeker規則提取器模塊gooseeker.py

(下載地址:?gooseeker/core at master · FullerHua/gooseeker · GitHub), 選擇一個存放目錄,這里為E:demogooseeker.py

5.2 與gooseeker.py同級創建一個.py后綴文件

如這里為E:Demothird.py,再以記事本打開,敲入代碼:
注釋:代碼中的31d24931e043e2d5364d03b8ff9cc77e 就是API KEY,用你申請的代替;amazon_book_pc 是規則的主題名,也用你的主題名代替

# -*- coding: utf-8 -*-
# 使用GsExtractor類的示例程序
# 以webdriver驅動Firefox采集亞馬遜商品列表
# xslt保存在xslt_bbs.xml中
# 采集結果保存在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") # 設置xslt抓取規則

# 創建存儲結果的目錄
current_path = os.getcwd()
res_path = current_path + "/third-result"
if os.path.exists(res_path):
    pass
else:
    os.mkdir(res_path)

# 驅動火狐
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)

# 獲取總頁碼
total_page = driver.find_element_by_xpath("http://*[@class="pagnDisabled"]").text
total_page = int(total_page) + 1

# 用簡單循環加載下一頁鏈接(也可以定位到下一頁按鈕,循環點擊)
for page in range(1,total_page):
    # 獲取網頁內容
    content = driver.page_source.encode("utf-8")

    # 獲取docment
    doc = etree.HTML(content)
    # 調用extract方法提取所需內容
    result = bbsExtra.extract(doc)

    # 保存結果
    file_path = res_path + "/page-" + str(page) + ".xml"
    open(file_path,"wb").write(result)
    print("第" + str(page) + "頁采集完畢,文件:" + file_path)

    # 加載下一頁
    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 執行third.py

打開命令提示窗口,進入third.py文件所在目錄,輸入命令 :python third.py 回車

5.4 查看結果文件

進入third.py文件所在目錄,找到名稱為result-2的文件夾然后打開

6. 總結

制作規則時,由于定位選擇的是偏好id,而采集網址的第二頁對應頁面元素的id屬性有變化,所以第二頁內容提取出現了問題,然后對照了一下網頁元素發現class是一樣的,果斷將定位改為了偏好class,這下提取就正常了。下一篇《在Python3.5下安裝和測試Scrapy爬網站》簡單介紹Scrapy的使用方法。

7. 集搜客GooSeeker開源代碼下載源

GooSeeker開源Python網絡爬蟲GitHub源

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44211.html

相關文章

  • API例子:用Java/JavaScript下載內容提取

    摘要:,引言本文講解怎樣用和使用接口下載內容提取器,這是一個示例程序。具體請參看內容提取器的定義。用下載內容提取器可以直接跳到第部分的內容。 showImg(https://segmentfault.com/img/bVyszb); 1,引言 本文講解怎樣用Java和JavaScript使用 GooSeeker API 接口下載內容提取器,這是一個示例程序。什么是內容提取器?為什么用這種方式...

    JackJiang 評論0 收藏0
  • Python即時網絡爬蟲:API說明

    摘要:用于數據分析和數據挖掘的網絡爬蟲程序中,內容提取器是影響通用性的關鍵障礙,如果這個提取器是從獲得的,您的網絡爬蟲程序就能寫成通用的框架。,相關文檔,即時網絡爬蟲項目內容提取器的定義,集搜客開源代碼下載源,開源網絡爬蟲源,文檔修改歷史, showImg(https://segmentfault.com/img/bVynLk); API說明——下載gsExtractor內容提取器 1,接口...

    genefy 評論0 收藏0
  • Python即時網絡爬蟲項目: 內容提取的定義

    摘要:集搜客從文件讀取從字符串獲得通過接口獲得返回當前提取方法,入參是一個對象,返回是提取結果用法示例下面是一個示例程序,演示怎樣使用類提取官網的帖子列表。 1. 項目背景 在python 即時網絡爬蟲項目啟動說明中我們討論一個數字:程序員浪費在調測內容提取規則上的時間,從而我們發起了這個項目,把程序員從繁瑣的調測規則中解放出來,投入到更高端的數據處理工作中。 2. 解決方案 為了解決這個問...

    KunMinX 評論0 收藏0
  • Python爬蟲實戰(1):爬取Drupal論壇帖子列表

    摘要:,引言在即時網絡爬蟲項目內容提取器的定義一文我們定義了一個通用的網絡爬蟲類,期望通過這個項目節省程序員一半以上的時間。本文將用一個實例講解怎樣使用這個爬蟲類。我們將爬集搜客老版論壇,是一個用做的論壇。 showImg(https://segmentfault.com/img/bVxTdG); 1,引言 在《Python即時網絡爬蟲項目: 內容提取器的定義》一文我們定義了一個通用的pyt...

    李文鵬 評論0 收藏0
  • 讓Scrapy的Spider更通用

    摘要:而分配任務的是會員中心的爬蟲羅盤,實現集中管理分布執行。開源即時網絡爬蟲項目同樣也要盡量實現通用化。網址和提取規則本來應該硬編碼到中的,現在隔離出來,由會員中心進行管理,那么就很容易做通用了。 showImg(https://segmentfault.com/img/bVyEnS); 1,引言 《Scrapy的架構初探》一文所講的Spider是整個架構中最定制化的一個部件,Spider...

    MartinDai 評論0 收藏0

發表評論

0條評論

itvincent

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<