【Python3爬蟲】第一個Scrapy項目


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里編寫我們的程序了,代碼如下:

 1 import scrapy
 2 
 3 
 4 class huyalol(scrapy.Spider):
 5     name = "huyalol"
 6     start_urls = ["https://www.huya.com/g/lol"]
 7 
 8     def parse(self, response):
 9         title_list = response.xpath('//*[@id="js-live-list"]/li/a[2]/text()').extract()
10         name_list = response.xpath('//*[@id="js-live-list"]/li/span/span[1]/i/text()').extract()
11         for i in range(1,11):
12             print(name_list[i-1], ': ',title_list[i-1])

然后在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


免責聲明!

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



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