1.建立scrapy專案
首先用cmd命令列去操作,輸入
scrapy startproject 專案名
#這裡輸入的專案名,就是在你輸入的目錄它會建立乙個新的資料夾,這個資料夾裡面還是同樣名字的乙個資料夾,專案新建的時候其實裡面只有乙個,後來的.idea是被pycharm開啟之後pycharm生成的。
那這一步其實也就是決定了資料夾名字,以及在命令欄中決定根目錄。
2.然後用pycharm開啟這個專案,從根目錄開啟,在spiders裡面新建乙個python檔案,從這裡開始。
3.
import scrapy
class mingyan(scrapy.spider): # 需要繼承scrapy.spider類,類名隨意後面不用
name = "scrapy_test" # 定義蜘蛛名,這個重要,根據這個啟動的,在這裡面寫清楚用來爬什麼的
def start_requests(self): # 由此方法通過下面鏈結爬取頁面
# 定義爬取的鏈結
urls = [
'','',
]for url in urls:
yield scrapy.request(url=url, callback=self.parse) # 爬取到的頁面如何處理?提交給parse方法處理
def parse(self, response):
'''start_requests已經爬取到頁面,那如何提取我們想要的內容呢?那就可以在這個方法裡面定義。
這裡的話,並木有定義,只是簡單的把頁面做了乙個儲存,並沒有涉及提取我們想要的資料,後面會慢慢說到
也就是用xpath、正則、或是css進行相應提取,這個例子就是讓你看看scrapy執行的流程:
1、定義鏈結;
3、定義規則,然後提取資料;
就是這麼個流程,似不似很簡單呀?
'''filename = 'mingyan-%s.html' % page # 拼接檔名,如果是第一頁,最終檔名便是:mingyan-1.html
with open(filename, 'wb') as f: # python檔案操作,不多說了;
self.log('儲存檔案: %s' % filename) # 打個日誌
上面這個程式解析
(1)格式化輸出那裡,%s是字串,%d是整數,首先在前面寫表示式的時候先用這個格式化代替,然後寫完了之後,在整個表示式後面%號一打,後面就跟著真正應該是的東西。
如果前面用了好多個%,那後面就是%( , , ) 用括號的形式來寫多項。
4. 執行爬蟲的辦法,就是在建立的根目錄那個檔案裡面使用命令列
scrapy crawl 爬蟲名
5. 起始url的第二種寫法,就是上面的第乙個函式的替代形式
import scrapy
class mingyan(scrapy.spider): # 需要繼承scrapy.spider類
name = "scrapy_test" # 定義蜘蛛名
start_urls = [ # 另外一種寫法,無需定義start_requests方法
'','',
]def parse(self, response):
'''start_requests已經爬取到頁面,那如何提取我們想要的內容呢?那就可以在這個方法裡面定義。
這裡的話,並木有定義,只是簡單的把頁面做了乙個儲存,並沒有涉及提取我們想要的資料,後面會慢慢說到
也就是用xpath、正則、或是css進行相應提取,這個例子就是讓你看看scrapy執行的流程:
1、定義鏈結;
3、定義規則,然後提取資料;
就是這麼個流程,似不似很簡單呀?
'''filename = 'mingyan-%s.html' % page # 拼接檔名,如果是第一頁,最終檔名便是:mingyan-1.html
with open(filename, 'wb') as f: # python檔案操作,不多說了;
self.log('儲存檔案: %s' % filename) # 打個日誌
(1)開啟檔案進行操作的時候,括號裡面要寫上開啟檔案的檔名,逗號後面是操作模式,唯讀還是讀寫,a+是從文字尾部開始新增。
用with open (檔名,處理模式) as f:
可以省掉關閉檔案的操作
(2)開啟頁面的過程就是上面的兩種方法,不管是用類裡面的乙個變數還是自己寫乙個函式,反正那一句或者那一段完了,開啟頁面的過程也就完了,
下面的parse是處理那個頁面的過程,而且他的接受引數括號裡面也有乙個response引數,上面的寫url的就是request操作,而下面的是處理頁面的response操作,response在這個例子裡面是儲存頁面的操作。
Spring官方文件閱讀筆記
beanpostprocessor.postprocessafterinstantiation 鉤子 型別轉化convertifnecessary spring建立bean的詳細過程 sqlsessiontemplate.selectlist sqlsessiontemplate.invoke de...
git 官方文件學習筆記
git完整筆記 git config list 檢查git配置 第一步安裝git時,先配置使用者名稱和郵箱 git config global user.name example git config global user.email johndoe example.com 配置預設編輯器,不配置...
react hook 官方文件閱讀筆記
usestate 是在函式呼叫時儲存變數的方式 usestate是一種新方法,它與 class 裡面的this.state提供的功能完全相同。一般來說,在函式退出後變數就會 消失 而 state 中的變數會被 react 保留。const count,setcount usestate 0 括號裡邊...