Python版本:3.5 IDE:Pycharm
今天跟着網上的教程做了第一個Scrapy項目,遇到了很多問題,花了很多時間終於解決了==
一、Scrapy終端(scrapy shell)
Scrapy終端是一個交互終端,供我們在未啟動spider的情況下嘗試及調試爬取代碼。 其本意是用來測試提取數據的代碼,不過我們可以將其作為正常的Python終端,在上面測試任何的Python代碼。
在命令行界面輸入scrapy shell <url>(這里的網址不需要加引號),例如:
scrapy shell https://www.huya.com/g/lol
接着該終端(使用Scrapy下載器(downloader))獲取URL內容並打印可用的對象及快捷命令(注意到以[s]
開頭的行):
fetch(request)
- 從給定請求獲取新響應,並相應地更新所有相關對象。view(response)
- 在本地Web瀏覽器中打開給定的響應,以進行檢查。這將向響應正文添加一個<base>標記,以便正確顯示外部鏈接(如圖片和樣式表)。但請注意,這將在您的計算機中創建一個臨時文件,不會自動刪除。shelp()
- 打印有可用對象和快捷方式列表的幫助
二、建立第一個Scrapy項目
選擇一個文件夾,shift+右鍵然后進入命令行界面,輸入以下代碼新建一個Scrapy項目:
scrapy startproject HuyaLol
打開Pycharm,然后再打開我們剛建好的HuyaLol項目,在spiders文件夾下新建一個lol.py
然后就可以在lol.py里編寫我們的程序了,代碼如下:
然后在Pycharm里打開命令行界面,輸入scrapy list可以列出當前爬蟲項目下所有的爬蟲文件,這里只有一個爬蟲文件huyalol。
然后在命令行界面輸入scrapy crawl huyalol,就可以運行我們的爬蟲了,結果如下:
三、遇到的問題及解決辦法
(1)利用xpath獲取不到數據,反復檢查代碼之后,發現是引號出了問題
”//*[@id="js-live-list"]/li/a[2]/text()“
這里兩端要用單引號,因為中間使用了雙引號。
(2)根據教程上把@id="js-live-list"改成@class=“title new-clickstat”后獲取不到數據,這個應該注意一下。
(3)在糾正上述問題后還是沒有得到數據
解決辦法:把settings.py里的ROBOTSTXT_OBEY = True改成ROBOTSTXT_OBEY = False