學習scrapy爬蟲框架的一些經驗和教訓


首先python的scrapy框架很好,功能強大,使用起來也很方便,省去了很多造輪子的時間。在學習的過程中也碰到了一些問題,在這里希望能分享與大家分享,做一個參考

1.安裝(pip延時響應問題)

         scrapy框架包含了很多包,理論上是通過pip install scrapy命令可直接安裝。但實際上還是有很多的問題

                           問題1:

          在cmd直接輸入pip install scrapy,可是網速會顯示很慢,最后出現紅字報錯

 

          原因:這是網絡連接的問題,pip命令會直接在python官網上下載包(官網的速度那就不敢恭維了)

          解決方法:輸入 pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple [module name]

                                                      ( 這個網站是清華的資源網)

               注:如果網速更慢的小伙伴的話,可以在再加上時間元素

                 形如:pip --default-timeout=10000 install  package(與上面的方法可以綜合使用)

 

2.所需要的知識儲備

  python基礎知識(if while for 繼承 迭代器 異常處理 文件操作之類(現用現學也不遲))

  xpath相關知識,知道如何再xml網頁中定位element(https://www.bilibili.com/video/av48794288?from=search&seid=14753612886237754814

  css選擇器相關知識(https://www.w3school.com.cn/css/index.asp

           https://blog.csdn.net/lynnpaul/article/details/79884677

  正則表達式(B站上全都有)

  《數據通信與網絡 第四版》第27章 萬維網與超文本傳輸協議(了解web運行的基本原理)

  掌握上面這些可以基本開始scrapy框架的學習了,后面的知識用到再說

  *系統性的學習很重要,很重要,很重要。百度只能當作輔助,最好是去看書。好東西都在書里

 

3.教訓

    vscode一定要搭建好環境

      推薦閱讀:https://www.cnblogs.com/asce/p/11600904.html

          (還有一篇文章找不到了,大意就是配置好 環境變量,怎么配置可以自己搜)

 

4.當scrapy shell出故障時,推薦使用jupyter notebook進行網頁分析(剛接觸python編程時也推薦使用)

  補充:通過后續的學習,發現jupyter進行網頁分析存在很大一部分局限性。

     實際上很多網站經典反爬蟲機制之一就是會檢查User-Agent。當我們直接通過爬蟲程序發送請求時,會被網站服務器拒絕(such as經典爬蟲練習網站:豆瓣)

     所以很多時候還是推薦直接使用scrapy框架(已經進行過User-Agent偽裝或者模擬)直接分析,比如直接打印所需要的信息來檢查xpath語法或者相關解析路徑的正確

      如何設置隨機User-Agent可參考我的另一篇博文:https://www.cnblogs.com/RosemaryJie/p/12336662.html

        

  安裝:通過pip命令安裝,jupyter(模塊名)(如何安裝詳細細節可百度)

  通過cmd,輸入jupyter notebook打開(在cmd中那個文件夾目錄下輸入命令,文件(file)便儲存在哪個文件夾) 

    在jupyter中可通過創建selector對象分析網頁(selector對象包含了xpath和css方法)

      from scrapy.selector import Selector

      from scrapy.http import HemlResponse

      import requests

      Response = requests . get("www.jer0.com")

      response = HtmlResponse ( url="www.jer0.com" , body = Response . text , encoding = ' utf-8' )

      selector = Selector(response = response)

 

 

            

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM