閱讀731 返回首頁    go gooseeker集搜客


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

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

(下載地址: https://github.com/FullerHua/gooseeker/tree/master/core), 選擇一個存放目錄,這裏為E:\demo\gooseeker.py

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

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

  1. # -*- coding: utf-8 -*-
  2. # 使用GsExtractor類的示例程序
  3. # 以webdriver驅動Firefox采集亞馬遜商品列表
  4. # xslt保存在xslt_bbs.xml中
  5. # 采集結果保存在third文件夾中
  6. import os
  7. import time
  8. from lxml import etree
  9. from selenium import webdriver
  10. from gooseeker import GsExtractor

  11. # 引用提取器
  12. bbsExtra = GsExtractor()   
  13. bbsExtra.setXsltFromAPI("31d24931e043e2d5364d03b8ff9cc77e", "amazon_book_pc") # 設置xslt抓取規則

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

  21. # 驅動火狐
  22. driver = webdriver.Firefox()
  23. 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"
  24. driver.get(url)
  25. time.sleep(2)

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

  29. # 用簡單循環加載下一頁鏈接(也可以定位到下一頁按鈕,循環點擊)
  30. for page in range(1,total_page):
  31.     # 獲取網頁內容
  32.     content = driver.page_source.encode('utf-8')
  33.     
  34.     # 獲取docment
  35.     doc = etree.HTML(content)
  36.     # 調用extract方法提取所需內容
  37.     result = bbsExtra.extract(doc)
  38.     
  39.     # 保存結果
  40.     file_path = res_path + "/page-" + str(page) + ".xml"
  41.     open(file_path,"wb").write(result)
  42.     print('第' + str(page) + '頁采集完畢,文件:' + file_path)
  43.     
  44.     # 加載下一頁
  45.     if page < total_page - 1:
  46.         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"
  47.         driver.get(url)
  48.         time.sleep(2)
  49. print("~~~采集完成~~~")
  50. 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源

若有疑問可以或集搜客網絡爬蟲

最後更新:2017-01-09 14:08:11

  上一篇:go 集搜客網絡爬蟲軟件Mac osx版安裝方法
  下一篇:go 定位標誌精確采集範圍——以安居客租房采集為例