scrapy是一個爬蟲中封裝好的一個明星框架,具有高性能的持久化存盤,異步的資料下載,高性能的資料決議,分布式,
對于初學者來說還是需要有一定的基礎作為鋪墊的學習,我將從下方的思維導圖中進行逐步的決議講述,
實驗工具即環境:
筆記本:Y9000X 2020
系統:win10
Python版本:python3.8.6
pycharm版本:pycharm 2021.1.2(Professional Edition)

一、安裝
下載tiwisted,此處位下載地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
下載好后打開終端進行安裝scrapy的必要模塊
安裝tiwisted,pip install tiwisted-xxxx
安裝pywin32:pip install pywin32
安裝scrapy:pip install scrapy
安裝完成后在終端輸入scrapy如果沒有報錯即安裝成功,

二、創建scrapy的工程
在pycharm中創建好的專案中的中終端輸入
scrapy startproject SDFDQPRO

檢查下專案目錄即可發現多出了如下的工程目錄

三、創建一個爬蟲目錄
在終端找到之前所創建的工程目錄,在此目錄下輸入scrapy genspider sdfdq_cj http://www.csrc.gov.cn/pub/shandong/
后方網站為中國證券監督管理委員會山東監管局,

運行后可發現工程目錄中多出一個名為sdfdq_cj.py的爬蟲檔案,

進入到爬蟲檔案中可以看到如下代碼
import scrapy class SdfdqCjSpider(scrapy.Spider): name = 'sdfdq_cj' # 表示被允許的url # allowed_domains = ['http://www.csrc.gov.cn/pub/shandong/'] # 起始url串列:該串列中存放的url會被scrapy自動進行請求的發送 start_urls = ['http://www.csrc.gov.cn/pub/shandong/sdfdqyxx/'] # 用作于資料決議:response引數表示的就是請求成功后對應的回應物件 def parse(self, response): pass
接下來對網站決議選取需要獲取的內容
四、資料決議

通過對網站的查看可以看出我們需要的是輔導期中的企業基本情況、作業進展報告、作業總結總的標題,日期以及鏈接,
scrapy對網站的決議沿用了xpath的決議方式,
import scrapy class SdfdqCjSpider(scrapy.Spider): name = 'sdfdq_cj' # 表示被允許的url # allowed_domains = ['http://www.csrc.gov.cn/pub/shandong/'] # 起始url串列:該串列中存放的url會被scrapy自動進行請求的發送 start_urls = ['http://www.csrc.gov.cn/pub/shandong/sdfdqyxx/'] # 用作于資料決議:response引數表示的就是請求成功后對應的回應物件 def parse(self, response): li_list = response.xpath('//div[@]//div[@]//li') for li in li_list: # xpath回傳的是串列,但是列元素一定是Selector型別的物件 # extract可以將Selector物件中的data引數存盤的字串提取出來 # 串列呼叫了extract之后則表示將串列中每一個data引數存盤的字串提取出來 title = li.xpath('./a//text()')[0].extract() date = li.xpath('./span/text()')[0].extract() url = 'http://www.csrc.gov.cn/pub/shandong/sdfdqyxx'+li.xpath('./a/@href').extract_first() print('title',title) print('url',url) print('date',date)
對網站的內容決議后運行scrapy 終端輸入 scrapy crawl sdfdq_cj 注意:此陳述句的運行目錄

可以看到我們想獲取的內容:
內容獲取到我們必須要將其持久化存盤才有意義:
五、scrapy的持久化存盤
1)基于指令的持久化存盤:
要求:只可以將parse的方法回傳值存盤到本地的文本檔案中
def parse(self, response): # 創建一個串列接識訓取的資料 all_data =https://www.cnblogs.com/t-dashuai/p/ [] li_list = response.xpath('//div[@]//div[@]//li') for li in li_list: # xpath回傳的是串列,但是列元素一定是Selector型別的物件 # extract可以將Selector物件中的data引數存盤的字串提取出來 # 串列呼叫了extract之后則表示將串列中每一個data引數存盤的字串提取出來 title = li.xpath('./a//text()')[0].extract() date = li.xpath('./span/text()')[0].extract() url = 'http://www.csrc.gov.cn/pub/shandong/sdfdqyxx'+li.xpath('./a/@href').extract_first() # 基于終端指令的持久化存盤操作 dic = { 'title':title, 'url':url, 'date':date } all_data.append(dic) return all_data
接下來在終端中輸入 scrapy crawl sdfdq_cj -o ./sdfdq.csv
將獲取的文本內容存盤到對應路徑下的sdfdq.csv文本檔案中

2)基于管道的持久化存盤
明天更,,,,,,,,,
Auto Copiedscrapy作為一個爬蟲中封裝好的一個明星框架,Auto Copied
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354438.html
標籤:Python
上一篇:python os模塊詳細用法
下一篇:Go單元測驗實踐
