1. 程式人生 > >【京東】scrapy爬蟲抓取京東圖書詳情、評論

【京東】scrapy爬蟲抓取京東圖書詳情、評論

1 前期工作

參考

測試

  1. 開啟京東圖書
  2. 在console中輸入$('ul.gl-warp > li').length,結果為30,說明該頁面是js動態頁面
  3. 輸入document.getElementsByClassName('page')[0].scrollIntoView(true),可以完成拖拽動作
    註釋:獲取類名為 page 的元素,見【說明】
  4. span#J_resCount::text獲取id屬性為J_resCount的span標籤的文字
    span.J_resCount::text獲取class屬性為J_resCount的span標籤的文字

準備

  • 開啟docker,開啟splash埠
    sudo service docker start

    sudo docker run -p 8050:8050 scrapinghub/splash

2 抓取目標確定

  1. 搜尋頁抓取:ID/ 折扣價/ 總評論數/ 書店名
  2. 詳情頁抓取:書名、出版社、作者、ISBN、出版時間、型別(不能按照順序來)

ID / 書名 / 原價 / 折扣價 / 作者 / 出版日期 / 出版社 / 總評分 / 總評論數 / 書店名 / ISBN /型別

附錄: win10 中的BUG

1 (已解決)找不到splash模組 No module named ‘splash’

  • 描述:裝好scrapy-splash後,依舊無法執行爬蟲,並報錯
  • 原因:沒有安裝splash
  • 解決辦法:安裝splash,開啟埠,執行爬蟲
1. 下載splash包 `pip install scrapy-splash`
2. 官網下載docker `https://store.docker.com/editions/community/docker-ce-desktop-windows`
3. 利用docker 執行splash  'docker run -p 8050:8050 scrapinghub/splash'
4. 驗證splash是否開啟,網頁輸入'http://localhost:8050'
4. 編輯scrapy

2 (已解決)報錯 ModuleNotFoundError: No module named ‘twisted.enterprise”

安裝完docker、splash後,執行爬蟲報錯,並且原先能正常執行的爬蟲也出現同樣錯誤

  • 懷疑1:安裝包損壞,得重灌scrapy
    操作:重新安裝scrapy後,沒用

  • 懷疑2:但執行不帶from twisted.enterprise import adbapi的爬蟲沒問題,而且以前這條命令能執行,但現在不能執行,懷疑twisted需要升級
    操作:升級twisted ,conda upgrade twisted,問題解決

3 (已解決)執行爬蟲出現 ImportError: cannot import name ‘_win32stdio’

  • 描述:
    更新splash pip install -- upgrade splash,執行爬蟲出現ImportError: cannot import name '_win32stdio'

4 (已解決)執行quotes爬蟲,報錯 ModuleNotFoundError: No module named ‘splash.downloadermiddlewares’

  • windows解決不了了,換linux了。。
  • 後續:時隔多日,殺回windows,用conda重灌 twistedscrapy就解決了