溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python Scrapy爬蟲框架如何使用

發(fā)布時間:2021-11-23 18:09:42 來源:億速云 閱讀:174 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“Python Scrapy爬蟲框架如何使用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

1、項目創(chuàng)建

創(chuàng)建一個Scrapy項目非常簡單,一般快速創(chuàng)建可以通過終端直接輸入如下代碼:

scrapy startproject zhuanti_new

        如果要在不同的文件中創(chuàng)建此項目,就需要先找到對應的文件路徑,當然你也可以通過pycharm,直接在對應的文件中,點擊左下角終端進行創(chuàng)建,項目就直接在對應的項目文件中創(chuàng)建了一個Scrapy項目

Python Scrapy爬蟲框架如何使用

2、Scrapy項目文件介紹

        通過下面截圖可以看到一個Scrapy項目有哪些文件,同時還需要創(chuàng)建和生成哪些文件,接下來逐一介紹。

Python Scrapy爬蟲框架如何使用

(1)最頂層的zhuanti_new文件夾是Scrapy的項目名稱

(2)第2層有4個文件:

第1個:和項目名稱相同的文件,就是我們通常叫的爬蟲包,所有的爬蟲代碼都在這個包里面

第2個:mian文件,是用來運行這個項目的主函數(shù)代碼文件,代碼寫完后通過這個文件總體運行

第3個:配置文件,說明一下默認設(shè)置文件的位置為zhuanti_new模塊下的settings文件,同時定義項目名稱為:zhuanti_new

第4個:為存儲爬取結(jié)果的txt文件

針對第一個文件里面的代碼重點文件下面逐一介紹一下:

(1)items.py文件:定義爬蟲抓取的字段信息

Python Scrapy爬蟲框架如何使用

(2)pipelines.py文件:主要用于數(shù)據(jù)處理、清洗和存儲

Python Scrapy爬蟲框架如何使用

(3)settings.py:主要用于設(shè)置請求頭、報警處理等相關(guān)問題

Python Scrapy爬蟲框架如何使用

(4)zhuantispider.py文件:重點爬取數(shù)據(jù)過程的代碼文件,也是新建立的文件

代碼如下:

from zhuanti_new.items import ZhuantiNewItemimport scrapyfrom scrapy.selector import Selector
class JianshuSpiderSpider(scrapy.Spider):   name = 'zhuantispider'   allowed_domains = ['jianshu.com']   start_urls = ['https://www.jianshu.com/recommendations/collections?page=1&order_by=hot']   #print(start_urls)
  def parse(self, response):       '''解析外面頁面'''       selector = Selector(response)       partical_urls = selector.re('<div class="count"><a target="_blank" href="(.*?)">', selector)       for url in partical_urls:           print(url)           right_url = response.urljoin(url)           #print(right_url)           parts = ['?order_by=added_at&page={0}'.format(k) for k in range(1, 11)]           for part in parts:               # 要爬取每個專題的前10個文章的信息               real_url = right_url + part               #print(real_url)               yield scrapy.Request(real_url, callback=self.parse_detail)
      links = ['https://www.jianshu.com/recommendations/collections?page={}&order_by=hot'.format(i) for i in                range(2, 3)]       for link in links:           print(link)           request = scrapy.Request(link, callback=self.parse)           yield request
  def parse_detail(self, response):       selector = Selector(response)       content = selector.xpath('//div[@class="content"]')       for detail in content:           try:               title = detail.xpath('a[1]/text()').extract_first()               summary = detail.xpath('p/text()').extract_first().strip()               author = detail.xpath('div/a[1]/text()').extract_first()               # comments = detail.xpath('div/a[2]/text()').extract_first()這樣是不行的               comments = detail.xpath('div/a[2]/text()').extract()[1].strip()               likes = detail.xpath('div/span[1]/text()').extract_first().strip()               money = detail.xpath('div/span[2]/text()').extract_first()
              item = ZhuantiNewItem()               if money is not None:                   item['title'] = title                   item['summary'] = summary                   item['author'] = author                   item['comments'] = comments                   item['likes'] = likes                   item['money'] = money.strip()               else:                   item['title'] = title                   item['summary'] = summary                   item['author'] = author                   item['comments'] = comments                   item['likes'] = likes               print(item)               yield item           except:               pass

以上就是最主要的幾個文件,對于初學者只要按照對應要求完成這幾個文件的代碼填寫就可以爬取到數(shù)據(jù)。

3、案例運行及結(jié)果

現(xiàn)在開始運行整體代碼,就需要創(chuàng)建上述的main文件了,具體main文件代碼如下:

Python Scrapy爬蟲框架如何使用

運行的爬蟲文件為:zhuantispider,務必不要寫成Scrapy項目名稱

爬取運行結(jié)果如下:

Python Scrapy爬蟲框架如何使用

“Python Scrapy爬蟲框架如何使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI